পুরো স্ক্রিপ্টটিকে template 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)