Tüm komut dosyasını {SERVERNAME} yer tutucularla birlikte bir şablon dizesine yerleştirin. Ardından dizeyi şunu kullanarak düzenleyin:
SET @SQL_SCRIPT = REPLACE(@TEMPLATE, '{SERVERNAME}', @DBNAME)
ve sonra çalıştır
EXECUTE (@SQL_SCRIPT)
Üç yıl içinde kodumun çalışmadığını kimsenin fark etmediğine inanmak zor !
EXEC
Birden fazla parti yapamazsınız . GO
bir toplu iş ayırıcısıdır, bir T-SQL ifadesi değildir. Üç ayrı dizge oluşturmak ve ardından ikameden sonra EXEC
her biri için gereklidir .
Sanırım tek bir şablon dizgesini bölerek birden çok satıra bölerek "akıllıca" bir şey yapılabilir GO
; Bunu ADO.NET kodunda yaptım.
Ve "SERVERNAME" kelimesini nereden aldım?
İşte az önce test ettiğim (ve işe yarayan) bazı kodlar:
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)