2016-07-25 57 views
0

可我是新蜂所有的SQL登錄,下降excel表

我有一個從客戶端,在那裏他給excel表與特定的SQL登錄和數量足夠大的要求。我目前正在使用下面的一個,並手動進行。

select 'drop login [' + name + '] from sys.server_principals WHERE name='ratnakar' and type_desc = 'SQL_LOGIN' 
DROP LOGIN [name] 

如果有人幫助我以有效的方式完成這將是非常好的。

+0

只需創建一個excel公式,它建立所需的SQL語句,將其拖放到Excel中,然後將結果複製粘貼到SSMS –

+0

非常感謝Nick。 –

回答

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 
    ); 

打開的遊標和循環,並做降(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 
+0

太棒了,非常感謝。 偉大的幫助。 –