it-swarm.com.de

SQL Server 2008 R2 Express-Berechtigungen - Benutzer können keine Datenbank erstellen oder ändern

Kürzlich wurde gerade ein Upgrade auf SQL Server 2008 R2 Express durchgeführt. Wenn ich versuche, eine Datenbank zu erstellen, nachdem ich mich mithilfe der Windows-Authentifizierung mit meiner ID myuser angemeldet habe, wird die folgende Fehlermeldung angezeigt:

Beim Ausführen einer Transact-SQL-Anweisung oder eines Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)
CREATE DATABASE-Berechtigung in Datenbank 'master' verweigert. RESTORE HEADERONLY wird abnormal beendet. Fehler 262

Wenn ich versuche, die Sysadmin-Rolle meinem Benutzer hinzuzufügen, wird der folgende Fehler angezeigt:

Hinzufügen eines Mitglieds für ServerRole 'sysadmin' fehlgeschlagen. (Microsoft.SqlServer.Smo)
Beim Ausführen einer Transact-SQL-Anweisung oder eines Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)
Der Benutzer ist nicht berechtigt, diese Aktion auszuführen. Fehler 15247

Wenn ich versuche, meinem Benutzer diese Rolle mit T-SQL hinzuzufügen, verwende ich diesen Befehl:

EXEC sp_addsrvrolemember 'ziffenergy\myuser', 'sysadmin';
GO

Hier ist der Fehler, den ich erhalte:

Meldung 15247, Ebene 16, Status 1, Prozedur sp_addsrvrolemember, Zeile 29
Der Benutzer hat keine Berechtigung, diese Aktion auszuführen.

Hat jemand irgendwelche Vorschläge? Es scheint, dass ich mit der Datenbank auf dem lokalen Computer nichts anfangen kann. Beachten Sie, dass ich der Administrator auf der von mir verwendeten Windows 7-Arbeitsstation bin. Wenn ich versuche, mit SQL Server Management Studio Datenbanken und/oder Benutzer auf unserem Netzwerk-IT-Test-Datenbankserver zu erstellen oder zu ändern, ist dies problemlos möglich.

16
user8128167

Sie können ein Administrator auf der Arbeitsstation sein, aber das bedeutet nichts für SQL Server. Ihr Login muss Mitglied der Sysadmin-Rolle sein, um die betreffenden Aktionen ausführen zu können. Standardmäßig wird die lokale Administratorgruppe nicht mehr zur Sysadmin-Rolle in SQL 2008 R2 hinzugefügt. Sie müssen sich mit etwas anderem anmelden (z. B. sa), um sich die Berechtigungen zu erteilen.

14
squillman

Ich komme zu spät zur Party, aber ich fand diese fantastische Schritt-für-Schritt-Anleitung , um die Kontrolle über Ihre SQLExpress-Instanz zu erlangen, wenn Sie nicht über Ihre sa verfügen Passwort. Auf diese Weise habe ich nicht nur mein SA-Kennwort zurückgesetzt, sondern auch mein Domänenkonto zu allen verfügbaren Serverrollen hinzugefügt. Ich kann jetzt Datenbanken erstellen, Anmeldungen ändern, Massenvorgänge ausführen, Sicherungen/Wiederherstellungen usw. mit meinem normalen Login durchführen.

Zusammenfassend gesagt, verwenden Sie SQL Server Configuration Manager, um Ihre Instanz in den Einzelbenutzermodus zu versetzen. Dadurch werden Sie beim Herstellen einer Verbindung zum Systemadministrator, sodass Sie alles einrichten können.

Bearbeiten: Ich habe die folgenden Schritte kopiert - ein dickes Lob an den ursprünglichen Autor des obigen Links.

  1. Melden Sie sich als Administrator (oder als Benutzer mit Administratorrechten) am Computer an.
  2. Öffnen Sie "SQL Server Configuration Manager"
  3. Klicken Sie im linken Bereich auf "SQL Server-Dienste"
  4. Beenden Sie die Instanz "SQL Server" und "SQL Server Agent" im rechten Fensterbereich, falls sie ausgeführt wird
  5. Führen Sie SQL Express im Einzelbenutzermodus aus, indem Sie mit der rechten Maustaste auf die Instanz "SQL Server" -> Eigenschaften klicken (im rechten Bereich von SQL Server Configuration Manager).
  6. Klicken Sie auf die Registerkarte "Erweitert" und suchen Sie nach "Startparameter". Ändern Sie die "Startup Parameters" so, dass der neue Wert -m ist. (ohne das <>) Beispiel: von: -dc:\Programme\Microsoft SQL ............. (bis zum Ende der Zeichenfolge) bis: -m; -dc:\Programme\Microsoft SQL ............. (bis zum Ende der Zeichenfolge)
  7. Starten Sie den SQL Server
  8. Öffnen Sie Ihr MS SQL Server Management Studio und melden Sie sich mit "Windows Authentication" als Authentifizierungsmodus am SQL Server an. Da der SQL Server im Einzelbenutzermodus ausgeführt wird und Sie mit Administratorrechten am Computer angemeldet sind, haben Sie einen "sysadmin" -Zugriff auf die Datenbank.
  9. Erweitern Sie den Knoten "Sicherheit" in MS SQL Server Management Studio im linken Bereich
  10. Erweitern Sie den Knoten "Logins"
  11. Doppelklicken Sie auf "sa"
  12. Ändern Sie das Kennwort, indem Sie ein komplexes Kennwort eingeben, wenn "Kennwortrichtlinie erzwingen" aktiviert ist. Andernfalls geben Sie einfach ein beliebiges Kennwort ein.
  13. Stellen Sie sicher, dass das Konto "sa" aktiviert ist, indem Sie im linken Bereich auf Status klicken. Stellen Sie das Optionsfeld unter "Login" auf "Aktiviert"
  14. OK klicken"
  15. Überprüfen Sie im Hauptfenster von MS SQL Server Management Studio, ob die SQL Server-Authentifizierung verwendet wird, indem Sie mit der rechten Maustaste auf den obersten Knoten im linken Bereich klicken (normalerweise ".\SQLEXPRESS (SQL Server)") und Eigenschaften auswählen.
  16. Klicken Sie im linken Bereich auf "Sicherheit" und stellen Sie sicher, dass "SQL Server- und Windows-Authentifizierungsmodus" unter "Serverauthentifizierung" ausgewählt ist.
  17. OK klicken"
  18. Trennen Sie die Verbindung zu MS SQL Server Management Studio
  19. Öffnen Sie "SQL Server Configuration Manager" erneut und stoppen Sie die SQL Server-Instanz.
  20. Klicken Sie mit der rechten Maustaste auf die SQL Server-Instanz und klicken Sie auf die Registerkarte "Erweitert". Suchen Sie erneut nach "Startup Parameters" und entfernen Sie das "-m;" dass Sie früher hinzugefügt haben.
  21. Klicken Sie auf "OK" und starten Sie die SQL Server-Instanz erneut
  22. Sie sollten sich jetzt mit dem neuen Kennwort, das Sie in Schritt 12 festgelegt haben, als "sa" anmelden können.
39
killthrush

In SSMS 2012 müssen Sie Folgendes verwenden:

Um den Einzelbenutzermodus zu aktivieren, wechseln Sie in den SQL-Instanzeigenschaften NICHT zum Tag "Advance", da bereits ein Tag "Startup Parameters" vorhanden ist.

  1. Füg m hinzu;" in Parameter;
  2. Starten Sie den Dienst neu und melden Sie diese SQL-Instanz mithilfe der Windows-Authentifizierung an.
  3. Die restlichen Schritte sind die gleichen wie oben. Ändern Sie Ihre Windows-Benutzerkontoberechtigung in Sicherheit oder setzen Sie das SA Kontokennwort zurück.
  4. Entfernen Sie zuletzt den Parameter "-m" aus den "Startparametern".
2
Yang

Ich folgte den Schritten in Killthrushs Antwort und zu meiner Überraschung funktionierte es nicht. Anmelden als sa Ich konnte meinen Windows-Domänenbenutzer sehen und hatte ihn zum Systemadministrator gemacht, aber als ich versuchte, mich mit Windows-Authentifizierung anzumelden, konnte ich meinen Anmeldenamen nicht unter Anmeldungen anzeigen, keine Datenbanken erstellen usw. Dann traf es mich. Dieses Login war wahrscheinlich an ein anderes Domain-Konto mit demselben Namen gebunden (mit irgendeiner internen/versteckten ID, die nicht richtig war). Ich hatte diese Organisation vor einiger Zeit verlassen und kam dann Monate später wieder . Anstatt mein altes Konto erneut zu aktivieren (das sie möglicherweise gelöscht haben), haben sie ein neues Konto mit derselben Domäne\Benutzername und einer neuen internen ID erstellt. Mit sa habe ich mein altes Login gelöscht, es mit dem gleichen Namen wieder hinzugefügt und sysadmin hinzugefügt. Ich habe mich wieder mit Windows Auth angemeldet und alles sieht so aus, wie es sollte. Ich kann jetzt meine Logins (und andere) sehen und alles tun, was ich als Sysadmin tun muss, indem ich mein Windows-Auth-Login verwende.

1
Vitoc

Ich habe 2 Konten auf meinem Windows-Computer und bei einem davon ist dieses Problem aufgetreten. Ich wollte das Konto sa nicht verwenden, ich wollte die Windows-Anmeldung verwenden. Mir war nicht sofort klar, dass ich mich einfach bei dem anderen Konto anmelden musste, mit dem ich SQL Server installiert hatte, und von dort aus die Berechtigungen für das neue Konto hinzufügen musste

(SSMS > Security > Logins > Add a login there)

Einfache Möglichkeit, den vollständigen Domainnamen zu erhalten, den Sie benötigen, um dort jeweils ein offenes cmd-Echo hinzuzufügen.

echo %userdomain%\%username%

Fügen Sie eine Anmeldung für diesen Benutzer hinzu und geben Sie ihm alle Berechtigungen für die Master-Datenbank und andere gewünschte Datenbanken. Wenn ich "alle Berechtigungen" sage, stellen Sie sicher, dass Sie KEINE der "Verweigern" -Berechtigungen überprüfen, da dies das Gegenteil bewirkt.

0
parliament