sql server - dynamic tsql in sql 2005 -
हाय मैं निम्नलिखित गतिशील sql का उपयोग कर रहा हूँ:
declare @ cmd nvarchar (4000) सेट @ सीएमडी = 'चयन करें' 'exec msdb.dbo.sp_update_job @job_id =' '' '' + कन्वर्ट (नवरेचार (255), जॉब_आईडी) + '' '' '', @वरियर_ लॉगिन_नाम = '' '' सा ' लेकिन यह सब कर रहा है exec ..... के रूप में छपाई कर रहा है .......
मैं परिणाम निष्पादित करना चाहता हूं, न सिर्फ उसे प्रिंट करना।
मुझे क्या करना चाहिए?
सादर
मानजॉट
कैसे के बारे में:
DECLARE @sql NVARCHAR (अधिकतम); SELECT @sql = COALESCE (@sql, '') + 'EXEC msdb.dbo.sp_update_job @job_id =' '' + CONVERT (एनवीएचएआरएआर (255), जॉब_आईडी) + '' ', @वरियर_ लॉगिन_नाम =' 'ए' '; ' से msdb.dbo.sysjobs; EXEC sp_sqlexec @sql;
ध्यान दें कि sp_sqlexec अनडॉप्लीकेशन और असमर्थित है ऐसा करने के लिए एक समर्थित तरीके से, सिर्फ एक कर्सर क्यों नहीं बनाते हैं, इसका पालन करना और डीबग करना बहुत आसान है (लाल का कोई समुद्र नहीं है और कोई अदृश्य नहीं है):
DECLARE @j UNIQUEIDENTIFIER ; सिलेबस सी कर्सर का चयन करें job_id से msdb.dbo.sysjobs; खोलें; FETCH अगले सी में से @ जे; WHILE @@ FETCH_STATUS = 0 BEGIN EXEC msdb.dbo.sp_update_job @job_id = @j, @owner_login_name = 'sa'; FETCH अगले सी में से @ जे; अंत DEALLOCATE सी;
या कभी आसान, चूंकि msdb.dbo.sysjobs तकनीकी रूप से एक सिस्टम तालिका नहीं है, और आप इसे सीधे संपादित कर सकते हैं:
UPDATE msdb.dbo Sysjobs SET owner_sid = SUSER_SID ('ए');
Comments
Post a Comment