Ich habe eine SQL Server 2012-Datenbank, die auf Amazon EC2 ausgeführt wird. Ich habe einen Benutzer erstellt, der Datenbanken erstellen, bearbeiten und löschen kann. Ich habe dem neuen Benutzer eine dbcreator
Serverrolle zugewiesen.
Mein Benutzer kann eine Remoteverbindung herstellen und den create database foo;
Befehl erfolgreich ausführen. Wenn der Benutzer jedoch versucht, die Datenbank mit drop database foo;
dem Befehl erneut zu löschen, schlägt der folgende Fehler fehl:
Warning: Fatal error 615 occurred at Feb 1 2014 5:15PM.
Note the error and time, and contact your system administrator.
ErrorCode: 21
Auch wenn die ausgewählte Datenbank ist master
(ich glaube also nicht, dass sie verwendet wird). Und der Befehl ist erfolgreich, wenn ich ihn erneut ausführe und als Administrator angemeldet bin.
Ich habe die neu erstellte Datenbank überprüft, und meinem Benutzer wurde die db_owner
Rolle in der Datenbank wie erwartet zugewiesen. Meines Erachtens sollte dies eine ausreichende Berechtigung sein, damit dieser Benutzer die gerade erstellte Datenbank löschen kann.
Laut http://technet.microsoft.com/en-us/library/ms178613.aspx sollte die Rolle db_owner über ausreichende Berechtigungen verfügen. "Erfordert die Berechtigung CONTROL für die Datenbank oder die Berechtigung ALTER ANY DATABASE oder die Mitgliedschaft in der festen Datenbankrolle db_owner."
Ich habe Fehler 615 nachgeschlagen und festgestellt, dass die Datenbanktabellen-ID% d mit dem Namen '%. * Ls' nicht gefunden werden konnte. " das macht für mich keinen sinn. http://technet.microsoft.com/en-us/library/aa937592(v=sql.80).aspx
SQL Server Versionsinfo: Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64) /n May 22 2013 17:10:44 /n Copyright (c) Microsoft Corporation/n Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)/n
- von select @@version
.
quelle
Ich habe die Ursache dafür nicht gefunden, aber die folgende, obwohl nicht beste Lösung, aktiviert den Befehl.
Ich hoffe, es weist auf das Problem hin und jemand kann eine bessere Antwort geben.
Ich verwende Microsoft SQL Server Management Studio (Administrator) unter localhost Security-Anmeldungen
Doppelklicken Sie auf Benutzer, wählen Sie Serverrollen aus, geben Sie dbcreator, public und sysadm an.
quelle