十幾個數據庫結構相同,需部署同一存儲過程,手動逐個執行效率低且易出錯。
DECLARE @sp_name NVARCHAR(128) = 'usp_MyProc';
DECLARE @sp_def NVARCHAR(MAX) = N'
CREATE PROCEDURE usp_MyProc
AS
BEGIN
-- 過程體
SELECT 1;
END';
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'USE [' + name + N']; ' + @sp_def + N' GO; '
FROM sys.databases
WHERE name LIKE 'BizDB_%' -- 篩選目標庫
AND state = 0; -- 僅在線數據庫
EXEC sp_executesql @sql;
$databases = @('DB1','DB2','DB3')
$script = Get-Content 'CreateProc.sql' -Raw
foreach ($db in $databases) {
Invoke-Sqlcmd -ServerInstance 'localhost' -Database $db -Query $script
Write-Host "Deployed to $db"
}
appsettings.json)。CREATE PROCEDURE 腳本。IF EXISTS ... DROP PROCEDURE,保證可重複執行。CREATE PROCEDURE 權限。採用動態 SQL 或腳本自動化,即可一次性完成多庫存儲過程部署,提升運維效率。