Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टी-एसक्यूएल में डेटाबेस नाम के लिए एक चर का उपयोग कैसे करें?

{SERVERNAME} प्लेसहोल्डर्स के साथ पूरी स्क्रिप्ट को टेम्प्लेट स्ट्रिंग में रखें। फिर स्ट्रिंग का उपयोग करके संपादित करें:

SET @SQL_SCRIPT = REPLACE(@TEMPLATE, '{SERVERNAME}', @DBNAME)

और फिर इसे

. के साथ चलाएं
EXECUTE (@SQL_SCRIPT)

यह विश्वास करना कठिन है कि, तीन वर्षों के दौरान, किसी ने ध्यान नहीं दिया कि मेरा कोड काम नहीं करता !

आप EXEC नहीं कर सकते एकाधिक बैच। GO एक बैच विभाजक है, टी-एसक्यूएल कथन नहीं। तीन अलग-अलग तार बनाना आवश्यक है, और फिर EXEC प्रतिस्थापन के बाद प्रत्येक।

मुझे लगता है कि कोई एकल टेम्पलेट स्ट्रिंग को GO पर विभाजित करके कई पंक्तियों में तोड़कर कुछ "चालाक" कर सकता है; मैंने इसे ADO.NET कोड में किया है।

और मुझे "SERVERNAME" शब्द कहाँ से मिला?

यहां कुछ कोड दिया गया है जिसका मैंने अभी परीक्षण किया है (और जो काम करता है):

DECLARE @DBNAME VARCHAR(255)
SET @DBNAME = 'TestDB'

DECLARE @CREATE_TEMPLATE VARCHAR(MAX)
DECLARE @COMPAT_TEMPLATE VARCHAR(MAX)
DECLARE @RECOVERY_TEMPLATE VARCHAR(MAX)

SET @CREATE_TEMPLATE = 'CREATE DATABASE {DBNAME}'
SET @COMPAT_TEMPLATE='ALTER DATABASE {DBNAME} SET COMPATIBILITY_LEVEL = 90'
SET @RECOVERY_TEMPLATE='ALTER DATABASE {DBNAME} SET RECOVERY SIMPLE'

DECLARE @SQL_SCRIPT VARCHAR(MAX)

SET @SQL_SCRIPT = REPLACE(@CREATE_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)

SET @SQL_SCRIPT = REPLACE(@COMPAT_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)

SET @SQL_SCRIPT = REPLACE(@RECOVERY_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में मौजूदा तालिका में विदेशी कुंजी बाधा कैसे जोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 68

  2. SQL सर्वर गुम अनुक्रमणिका

  3. कोडइग्निटर एमएसएसक्यूएल कनेक्शन

  4. मैं SQL सर्वर 2008 प्रबंधन स्टूडियो में टेक्स्ट या वर्कर (MAX) कॉलम की पूरी सामग्री कैसे देखूं?

  5. माइक्रोसॉफ्ट द्वारा डाटाबेस नेमिंग कन्वेंशन?