2013-01-11 10 views
9

मुझे वर्तमान डेटाबेस (ALTER DATABASE...) पर अद्यतन स्क्रिप्ट चलाने की आवश्यकता है, लेकिन इसका नाम अंतर्निहित नहीं कर सकता है। वर्तमान डीबी नाम प्राप्त करने और ALTER DATABASE (एसक्यूएल सर्वर 2005 और ऊपर) के अंदर उपयोग करने के लिए कुछ फ़ंक्शन का उपयोग करना संभव है? मैंने db_name() का उपयोग करने की कोशिश की, लेकिन काम नहीं करता है।इसके वर्तमान नाम का उपयोग किए बिना वर्तमान डेटाबेस

select db_name(); काम करता है

ALTER DATABASE db_name() ...

उत्तर

15

काम नहीं करता है आप की तरह

declare @dbname varchar(100) 
set @dbname=quotename(db_name()) 
exec('alter database '[email protected]+' ...'); 

या कुछ और उपयोग करने की आवश्यकता .. और भी आसान

set @sql='alter database '+quotename(db_name())+' ...'; 
exec(@sql) 
+0

यह अभी भी db_name में त्रुटि() – Raj

+0

मुझे लगता है कि होगा यह है उसी डेटाबेस पर ऑपरेशन के कारण, यहां आपके लिए कुछ उपयोगी है http://blog.sqlauthority.com/2010/02/11/sql-server-alter-database-dbname-set-single_user-with-rollback- तत्काल/ – brykneval

+0

@राज - जब मैंने पहली बार इसे टाइप किया, तो मैंने माना कि मैं उपयोग कर सकता हूं अभिव्यक्ति में db_name() फ़ंक्शन, लेकिन इसे पहले वर्चर में कास्टिंग करने की आवश्यकता है। मैं इसे प्रतिबिंबित करने के लिए इसे संपादित करूंगा। –

0

प्रयास करें इस

DECLARE @DBName sysname; 
SET @DBName = (SELECT db_name()); 
DECLARE @SQL varchar(1000); 
SET @SQL = 'ALTER DATABASE '[email protected]+' .......' 

राज

29

वास्तव में कुछ इस तरह अधिक शायद थोड़ा बेहतर आप वर्तमान डेटाबेस में फेरबदल कर रहे हैं तो यह है:

ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 90

+4

यह सबसे अच्छा जवाब है, लेकिन ध्यान दें कि यह केवल SQL Server 2012 और ऊपर के लिए काम करता है। मूल प्रश्न SQL सर्वर 2005 के लिए टैग किया गया है। http://stackoverflow.com/questions/19238834/alter-database-current-exception –

+2

@AdrianEdwards, सत्य देखें, लेकिन यह भी पहली हिट है जब googling, 'sql सर्वर डेटाबेस वर्तमान डेटाबेस बदलें। :) –

संबंधित मुद्दे