各位SQL高手們好
我這邊有多個資料庫,但是要做資料庫的欄位檢查,所以都要執行相同語法,
SQL 語法開頭打上 use A資料庫,A資料庫可以執行該語法,小弟想問:
如果我有A~Z多資料庫,我該如何寫語法,讓資料庫依序去執行該語法並傳輸結果出來?
DECLARE @sql nvarchar(max); SET @sql='你的指令'; use A; EXECUTE(@sql); use B; EXECUTE(@sql); ...
<pre class="c" name="code">
declare @資料庫名稱 varchar(100)
declare @sql_execute_str nvarchar(500)
declare @各資料庫要執行的語法 varchar(100)
set @各資料庫要執行的語法='SELECT COUNT(*) as 執行結果 FROM information_schema.TABLES'
declare myCursor cursor for
SELECT name AS 'DATABASENAME' FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
order by name
open myCursor
FETCH NEXT FROM myCursor INTO @資料庫名稱
WHILE @@FETCH_STATUS = 0
BEGIN
select @資料庫名稱 as '目前資料庫名稱'
SET @sql_execute_str = N'use '+ @資料庫名稱 + ' '
set @sql_execute_str=@sql_execute_str + @各資料庫要執行的語法
EXECUTE sp_executesql @sql_execute_str
FETCH NEXT FROM myCursor INTO @資料庫名稱
END
CLOSE myCursor
DEALLOCATE myCursor