试图让单个 SQL 脚本适用于多个环境,但该USE
语句会导致其他环境出错,即在下面的示例中,当针对 SQL02 运行时USE [application]
,即使在BEGIN ... END
?
-- connected to SQL02
DECLARE @STAGE INTEGER = 3
IF @@SERVERNAME = 'SQL02'
SET @STAGE = 1
IF @@SERVERNAME = 'SQL03'
SET @STAGE = 2
IF @STAGE = 1
BEGIN
IF EXISTS ( SELECT *
FROM [application_tst].[sys].[database_principals]
WHERE name = N'qauser' )
BEGIN
USE [application_tst]
--rest of code
END
END
IF @STAGE = 2
BEGIN
IF EXISTS ( SELECT *
FROM [application].[sys].[database_principals]
WHERE name = N'qauser' )
BEGIN
USE [application]
--rest of code
END
END