Erro de sintaxe DROP LOGIN do SQL Server 2005

1

Esse trecho de código (é apenas um repetidor, não o código real que eu vou executar) lança um erro de sintaxe no comando DROP LOGIN:

declare @obso_user varchar(16)
set @obso_user = 'BEN_VA362781'
DROP LOGIN @obso_user

Alguém sabe por quê?

    
por RonJohn 14.02.2014 / 21:58

1 resposta

0

Você não pode usar uma variável com DROP LOGIN . Para fazer isso, você precisará usar SQL dinâmico:

DECLARE @obso_user VARCHAR(16)
SET @obso_user = 'BEN_VA362781'

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

Coloque isso em CURSOR para fazer mais do que o login único:

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
    
por 14.02.2014 / 22:21