2011-06-06 13 views
5

Tôi đang tìm cách xóa hàng loạt người dùng khỏi cơ sở dữ liệu bằng tập lệnh cho mọi thông tin đăng nhập bằng tên phù hợp với mẫu nhất định. Cách tốt nhất để làm điều này với TSQL là gì?Thả tất cả các thông tin đăng nhập nơi loginname như

DELETE syslogins WHERE.... không hoạt động

Đang cố gắng để xóa thẳng từ syslogins sẽ trở lại "hoc cập nhật Quảng cáo để catalog hệ thống không được phép"

Trả lời

5

Làm thế nào về truy vấn này để tạo ra các câu lệnh TSQL của bạn? Sau đó sao chép SQL này vào một truy vấn mới và exec.

select 'drop login [' + name + '];' 
from sys.server_principals 
WHERE name like 'foo%' 

Đây cơ bản là tập lệnh sẽ được tạo và chạy khi bạn xóa/xóa thông tin đăng nhập từ SSMS.

+0

Cảm ơn p. Nếu không có gì tốt hơn đi cùng tôi sẽ làm theo cách này. Tôi đã hy vọng tránh được vòng lặp, nhưng nếu nó chỉ có thể được thực hiện một lúc đó là những gì tôi sẽ làm. –

0
USE MyDatabase 

DECLARE @LoginName sysname 
DECLARE @SQL NVARCHAR(1000) 

DECLARE DBLOGINS CURSOR FOR 
    SELECT name FROM sys.database_principals 
    WHERE name LIKE 'some_pattern%' 

OPEN DBLOGINS 

FETCH NEXT FROM DBLOGINS INTO @LoginName 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @SQL = 'DROP LOGIN [' + @LoginName + ']' 
    EXEC sp_executesql @SQL 
    FETCH NEXT FROM DBLOGINS INTO @LoginName 
END 

CLOSE DBLOGINS 
DEALLOCATE DBLOGINS 
Các vấn đề liên quan