Mam bazę danych SQL Server 2012 uruchomioną na Amazon EC2. Stworzyłem użytkownika, aby móc tworzyć, edytować i upuszczać bazy danych. Dałem nowemu użytkownikowi dbcreator
rolę serwera.
Mój użytkownik może połączyć się zdalnie i pomyślnie uruchamia create database foo;
polecenie. Ale gdy użytkownik próbuje ponownie usunąć bazę danych za drop database foo;
pomocą polecenia, kończy się niepowodzeniem z następującym błędem:
Warning: Fatal error 615 occurred at Feb 1 2014 5:15PM.
Note the error and time, and contact your system administrator.
ErrorCode: 21
Mimo że wybrana baza danych jest master
(więc nie sądzę, że jest używana). Polecenie kończy się powodzeniem, gdy uruchomię je ponownie zalogowany jako użytkownik administracyjny.
Sprawdziłem nowo utworzoną bazę danych, a mojemu użytkownikowi przypisano db_owner
rolę w bazie danych zgodnie z oczekiwaniami, więc rozumiem, że powinny to być wystarczające uprawnienia, aby ten użytkownik mógł usunąć utworzoną właśnie bazę danych.
Zgodnie z http://technet.microsoft.com/en-us/library/ms178613.aspx rola db_owner powinna być wystarczająca. „Wymaga uprawnienia CONTROL do bazy danych lub ZMIEŃ DOWOLNĄ bazę danych lub członkostwo w db_owner ustalonej roli bazy danych.”
Poszukałem błędu 615 i znalazłem „Nie można znaleźć identyfikatora tabeli bazy danych% d, nazwa '%. * Ls.” co nie ma dla mnie sensu. http://technet.microsoft.com/en-us/library/aa937592(v=sql.80).aspx
Informacje o wersji serwera SQL: 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
- z select @@version
.
źródło
Nie znalazłem przyczyny tego, ale poniższe, choć nie najlepsze rozwiązanie, włącza polecenie.
Mam nadzieję, że wskazuje na problem i ktoś może udzielić lepszej odpowiedzi.
Używam Microsoft SQL Server Management Studio (Administrator) W loginach zabezpieczeń localhost
Kliknij dwukrotnie użytkownika, wybierz Role serwera, podaj dbcreator, public i sysadm.
źródło