SQL Server 2005 DROP LOGIN 语法错误

SQL Server 2005 DROP LOGIN 语法错误

这段代码(它只是一个重复器,而不是我要运行的实际代码)在 DROP LOGIN 命令上引发语法错误:

declare @obso_user varchar(16)
set @obso_user = 'BEN_VA\20362781'
DROP LOGIN @obso_user

有人知道为什么吗?

答案1

您不能将变量与 一起使用DROP LOGIN。为此,您需要使用动态 SQL:

DECLARE @obso_user VARCHAR(16)
SET @obso_user = 'BEN_VA\20362781'

DECLARE @sql NVARCHAR(100)
SET @sql = N'DROP LOGIN [' + @obso_user + ']'
EXEC sp_executesql @sql

将其放入CURSOR可以执行比单次登录更多的操作:

DECLARE @obso_user VARCHAR(16)
DECLARE @sql NVARCHAR(100)

DECLARE USER_CUR CURSOR FOR
SELECT [Something] FROM User_Table

OPEN USER_CUR
FETCH NEXT FROM USER_CUR INTO @obso_user
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = N'DROP LOGIN [' + @obso_user + ']'
    EXEC sp_executesql @sql
    FETCH NEXT FROM USER_CUR INTO @obso_user
END

CLOSE USER_CUR
DEALLOCATE USER_CUR

相关内容