SSMS नहीं करेंगे, मैं दोहराता हूं, आप डैनियामिक एसक्यूएल में दौड़ रहे एक कमांड का उपयोग करने के लिए नहीं होंगे ।
यदि अंतिम लक्ष्य चुने हुए डेटाबेस के अंदर कुछ अन्य गतिशील एसक्यूएल को निष्पादित करना है, तो यह काफी आसान है:
DECLARE @db sysname = N'db1';
DECLARE @exec nvarchar(max) = QUOTENAME(@db) + N'.sys.sp_executesql',
@sql nvarchar(max) = N'SELECT DB_NAME();';
EXEC @exec @sql;
यदि आपको पैरामीटर पारित करने की आवश्यकता है, तो कोई समस्या नहीं:
DECLARE @db sysname = N'db1', @i int = 1;
DECLARE @exec nvarchar(max) = QUOTENAME(@db) + N'.sys.sp_executesql',
@sql nvarchar(max) = N'SELECT DB_NAME(), @i;';
EXEC @exec @sql, N'@i int', @i;
यदि लक्ष्य चुने हुए डेटाबेस के अंदर कुछ स्थिर SQL को निष्पादित करना है , तो शायद आपको प्रत्येक डेटाबेस में संग्रहीत प्रक्रिया में उस स्थिर SQL को संग्रहीत करने पर विचार करना चाहिए और इसे गतिशील रूप से इस तरह से कॉल करना चाहिए:
DECLARE @db sysname = N'db1';
DECLARE @exec nvarchar(max) = QUOTENAME(@db) + N'.sys.sp_executesql',
@sql nvarchar(max) = N'EXEC dbo.procedurename;';
EXEC @exec @sql;
और उम्मीद है कि अंतिम लक्ष्य एसएसएमएस में यह सब कोड नहीं चलाना है, ताकि एसएसएमएस अब के संदर्भ में है @db
... डैनियल वास्तव में इसे पसंद करेंगे अगर मैं स्पष्ट रूप से कहता हूं कि यह संभव नहीं है, जैसा कि @ लोथर की टिप्पणी में भी कहा गया है।