0
我有一個腳本,如果它存在,然後重新創建它的用戶。我有這樣的重複30次。如下圖所示:如何將User和LogIn作爲參數傳遞給存儲過程?
IF EXISTS (SELECT 1 FROM sys.sysusers AS s WHERE s.name = N'johndoe')
BEGIN
PRINT 'Dropping user johndoe...'
DROP USER johndoe;
END
CREATE USER [johndoe] FOR LOGIN [uat\johndoe];
我想知道是否有可能編寫接受用戶名和域名,然後刪除並重新創建用戶的存儲過程?所以我可以這樣稱呼:
EXEC usp_DropAndRecreateUsers @username='johndoe', @domainName='uat'
但是,在編寫存儲過程之後,我意識到它不會像我想象的那麼容易。這可能是這個原因尚未完成的原因。但是,仍然可以在SQL Server(2008及更高版本)中執行此操作嗎?
我做什麼(不工作):
CREATE PROCEDURE dbo.usp_DropAndRecreateUsers
(@username varchar(100),
@domainName varchar(100))
AS
DECLARE @loginName varchar(200) = '['[email protected]+'\'[email protected]+']';
IF EXISTS (SELECT 1 FROM sys.sysusers AS s WHERE s.name = @username)
BEGIN
DROP USER @username;
END
CREATE USER @username FOR LOGIN @loginName;
更新: 的錯誤是,當我在Drop/Create User @username
使用一個參數,它被認爲是無效的SQL語句。錯誤消息如下:Incorrect syntax near '@username'.Expecting ID, or QUOTED_ID.
你可能比「不工作」較爲模糊? – HABO
@HABO「表現不符合預期」。我贏了嗎? –
雖然他有一點,但是你沒有描述你遇到的問題/錯誤,這很難幫助你解決問題。 –