多くの環境で動作する単一の 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