通过在 SQL 服务器中使用游标,在每个客户数据库上正确执行 SQL 服务器代理作业的调用
Properly execute the calling of SQL Server Agent job on each customer database by using cursors in SQL Server
需要更新 SQL 服务器代理作业 (xyz) 以删除存储过程 (sp_abc
) 的使用并正确执行 SQL 服务器代理作业 (xyz) 的调用在 SQL 服务器中使用游标在每个客户数据库上。
需要帮助,如何记下代码
如何查看所有用户数据库的列表:
SELECT *, name, database_id, create_date
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
以及如何使用光标查找所有用户数据库:
DECLARE @DatabaseName VARCHAR(MAX)
DECLARE DatabaseList CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
OPEN DatabaseList;
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @DatabaseName
--Exec your SP
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
END;
CLOSE DatabaseList;
DEALLOCATE DatabaseList;
最后,如果您有针对每个数据库的存储过程(sp_abc
),这就是答案:
DECLARE @DatabaseName NVARCHAR(MAX)
DECLARE @SQL NVARCHAR(MAX)
DECLARE DatabaseList CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
OPEN DatabaseList;
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @DatabaseName
--Exec your SP
Set @SQL = CONCAT(@DatabaseName, '.dbo.', 'sp_help')
PRINT @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
END;
CLOSE DatabaseList;
DEALLOCATE DatabaseList;
需要更新 SQL 服务器代理作业 (xyz) 以删除存储过程 (sp_abc
) 的使用并正确执行 SQL 服务器代理作业 (xyz) 的调用在 SQL 服务器中使用游标在每个客户数据库上。
需要帮助,如何记下代码
如何查看所有用户数据库的列表:
SELECT *, name, database_id, create_date
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
以及如何使用光标查找所有用户数据库:
DECLARE @DatabaseName VARCHAR(MAX)
DECLARE DatabaseList CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
OPEN DatabaseList;
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @DatabaseName
--Exec your SP
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
END;
CLOSE DatabaseList;
DEALLOCATE DatabaseList;
最后,如果您有针对每个数据库的存储过程(sp_abc
),这就是答案:
DECLARE @DatabaseName NVARCHAR(MAX)
DECLARE @SQL NVARCHAR(MAX)
DECLARE DatabaseList CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
OPEN DatabaseList;
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @DatabaseName
--Exec your SP
Set @SQL = CONCAT(@DatabaseName, '.dbo.', 'sp_help')
PRINT @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM DatabaseList INTO @DatabaseName;
END;
CLOSE DatabaseList;
DEALLOCATE DatabaseList;