0
想有一個SQL腳本,在許多環境中工作,但對SQL02運行時,USE
語句導致了其他環境的錯誤,即在下面的例子中,該USE [application]
,甚至內部的BEGIN ... END
時?如何在BEGIN ... END塊中使用USE?
-- 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
啊,剛剛試過這個** DROP USER [basic] **和三個部分名稱的語法是無效的:-( – SteveC
爲那個(和任何其他類似的名稱)要麼使用動態sql或創建一個存儲過程usp_dropuser *在每個數據庫*中,並明確地用3部分名稱調用SP,後面的選項是不必要的複雜的imho,我會說動態sql在這種情況下是好的 –
謝謝@remusrusanu – SteveC