Ich habe ein SQL-Konto mit den folgenden Berechtigungen für eine Datenbank:
Die db_executor
Rolle, in der dieses Konto Mitglied ist, wurde von diesem Skript erstellt:
CREATE ROLE [db_executor] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO [db_executor]
GO
Als ich ein laufen select
, update
, insert
oder delete
auf dem Tisch, es funktioniert gut. Wenn ich versuche, truncate
die Tabelle aufzurufen, wird folgende Fehlermeldung angezeigt:
Das Objekt "TableName" kann nicht gefunden werden, da es nicht vorhanden ist oder Sie keine Berechtigungen haben.
Welche Berechtigung fehlt diesem Konto?
sql-server
sql-server-2012
permissions
Mansfield
quelle
quelle
TRUNCATE TABLE
ist DDL, nicht DML.Antworten:
Der beste Ort, um nach diesen Informationen zu suchen, sind Bücher online. Der Artikel
TRUNCATE TABLE
hier zeigt:ALTER ist also die erforderliche Mindestberechtigung. Sie können das als DB-Besitzer bekommen, Sie können das als DB_DDLAdmin bekommen. Oder gewähren Sie einfach alter.
Wenn Sie darüber nachdenken, was das Abschneiden bewirkt und wie es funktioniert, ist dies sinnvoll. Es ist ein ziemlich "strenger" Befehl, der die Datentabelle leert und dies schnell erledigt.
quelle
Gemäß dieser Referenz in BOL :
quelle
Sie können eine gespeicherte Prozedur mit Ausführen als Eigentümer für nur eine Tabelle oder eine gespeicherte Prozedur für eine Tabelle erstellen. Im nächsten Code wird eine Prozedur zum Abschneiden einer Tabelle gespeichert, ohne die Erlaubnis von
db_owner
oder einer anderen zu erteilen :quelle
Sie können eine gespeicherte Prozedur mit Ausführen als Eigentümer für nur eine Tabelle oder eine gespeicherte Prozedur für eine Tabelle erstellen. Im nächsten Code wird eine Prozedur zum Abschneiden einer Tabelle gespeichert, ohne die Erlaubnis von db_owner oder einer anderen zu erteilen. In dieser Version von SP ist die Behandlung von Fehlern und die Verhinderung von SQL Injection enthalten
quelle
Soweit ich weiß, können Sie das Zurückschneiden nicht rückgängig machen. Daher ist die Transaktion "Transaktion starten / festschreiben" nicht erforderlich.
quelle