可我是新蜂所有的SQL登錄,下降excel表
我有一個從客戶端,在那裏他給excel表與特定的SQL登錄和數量足夠大的要求。我目前正在使用下面的一個,並手動進行。
select 'drop login [' + name + '] from sys.server_principals WHERE name='ratnakar' and type_desc = 'SQL_LOGIN'
DROP LOGIN [name]
如果有人幫助我以有效的方式完成這將是非常好的。
可我是新蜂所有的SQL登錄,下降excel表
我有一個從客戶端,在那裏他給excel表與特定的SQL登錄和數量足夠大的要求。我目前正在使用下面的一個,並手動進行。
select 'drop login [' + name + '] from sys.server_principals WHERE name='ratnakar' and type_desc = 'SQL_LOGIN'
DROP LOGIN [name]
如果有人幫助我以有效的方式完成這將是非常好的。
您也可以嘗試將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
);
打開的遊標和循環,並做降(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
太棒了,非常感謝。 偉大的幫助。 –
只需創建一個excel公式,它建立所需的SQL語句,將其拖放到Excel中,然後將結果複製粘貼到SSMS –
非常感謝Nick。 –