如何仅删除 Windows 登录 SQL 服务器

how to delete only Windows Login in SQL Server

我正在使用以下代码删除 SQL 登录

 declare @name  varchar(1000)     
 declare @xtype varchar(20)
 declare @sqlstring nvarchar(4000)

 declare SPViews_cursor cursor for
      SELECT  QUOTENAME(NAME) AS name
     FROM sys.server_principals     

 open SPViews_cursor
 fetch next from SPViews_cursor into @name     

 while @@fetch_status = 0
 begin
    set @sqlstring = 'drop LOGIN ' + @name
    exec sp_executesql @sqlstring
    set @sqlstring = ' '

    fetch next from SPViews_cursor into @name
 end

 close SPViews_cursor
 deallocate SPViews_cursor

但它正在删除所有登录,我只需要删除 Windows 登录,所以只有 SQL 身份验证。有可能。有什么建议吗?这段代码可以更短吗?

将您的查询更改为:

SELECT  QUOTENAME(NAME) AS name
FROM sys.server_principals
WHERE type = 'U'

U 表示 Window 登录。您可以找到更多信息 here.

使用type_desc类型列过滤'Windows Login'

SELECT  QUOTENAME(NAME) AS name
     FROM sys.server_principals
    where type_desc = 'WINDOWS_LOGIN'