Ich habe mich gefragt, ob es eine ziemlich effiziente Möglichkeit gibt, T-SQL mit SQL Server 2000-Syntax zu verwenden, um SELECT, INSERT, UPDATE, DELETE für alle TABELLEN und ANSICHTEN für eine bestimmte Datenbank zu gewähren, wobei 2 oder 3 der über 100 Objekte ausgeschlossen werden. Ich möchte auch EXEC-Berechtigungen für alle gespeicherten Prozeduren gewähren können.
Derzeit verwende ich den folgenden Code, um sie einzeln zu ändern. Dies für ungefähr 100 Tabellen und 100 Ansichten zu tun, dauert viel zu lange und wird über die GUI noch länger dauern (es sei denn, ich mache das auch falsch).
use [DATABASE_NAME]
GO
GRANT DELETE ON [dbo].[table_name]TO [user_name]
GO
use [DATABASE_NAME]
GO
GRANT INSERT ON [dbo].[table_name]TO [user_name]
GO
use [DATABASE_NAME]
GO
GRANT SELECT ON [dbo].[table_name]TO [user_name]
GO
use [DATABASE_NAME]
GO
GRANT UPDATE ON [dbo].[table_name]TO [user_name]
GO
Wie kann ich mit T-SQL ALLE Benutzertabellen und -ansichten durchlaufen, um bestimmte Berechtigungen zu erteilen und dabei einige Objekte auszuschließen?
quelle