我是新蜜蜂,
我有来自客户的请求,他已经给出了具有特定SQL登录的excel表,并且计数足够大。我目前正在使用下面一个并手动完成。
select 'drop login [' + name + '] from sys.server_principals WHERE name='ratnakar' and type_desc = 'SQL_LOGIN'
DROP LOGIN [name]
如果有人帮助我以有效的方式做到这一点真的很棒。
答案 0 :(得分:0)
您也可以尝试将excel文件的内容导入到sql server数据库的表中,或者将excel导出到csv文件中并将其导回到SQL Server临时表中并打开游标并循环执行记录并将drop语句放入循环。
编辑:
使用批量插入导入临时表:https://technet.microsoft.com/en-us/library/ms191503%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396
BULK INSERT #Logins
FROM 'C:\Logins.csv'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
KEEPNULLS
);
打开Cursor并循环遍历它并执行drop(https://www.mssqltips.com/sqlservertip/1599/sql-server-cursor-example/):
DECLARE @loginName varchar(2000)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM #Logins
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @loginName
WHILE @@FETCH_STATUS = 0
BEGIN
select 'drop login [' + @loginName + '] from sys.server_principals WHERE name='ratnakar' and type_desc = 'SQL_LOGIN'
DROP LOGIN [@loginName]
FETCH NEXT FROM db_cursor INTO @loginName
END
CLOSE db_cursor
DEALLOCATE db_cursor