如何仅删除 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'
我正在使用以下代码删除 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'