Wie kann ich feststellen, welches Benutzerkonto zum Ausführen einer Aktion verwendet wird (im Kontext von SQL Server)?

Wie kann ich feststellen, welches Benutzerkonto zum Ausführen einer Aktion verwendet wird (im Kontext von SQL Server)?

Beispielsweise musste ich bei der Installation von SQL Server 2008 ein Konto auswählen, unter dem das Datenbankmodul ausgeführt werden sollte.

Als ich eine 2005-Datenbankdatei mit SQL Server Management Studio anhängen wollte, trat ein Berechtigungsfehler auf, der das Datenbank-Upgrade verhinderte. Ich habe die Datenbankdateien überprüft und das Konto „SQLServerMSSQLUser$ComputerName$MSSQLSERVER“ verfügt über vollständige Berechtigungen für die Datei.

Ich nahm also an, dass SQL Server Management Studio unter meinem Benutzernamen ausgeführt wurde, der keine Schreibberechtigung zum Aktualisieren der Datenbankdatei hatte. Also fügte ich meinem Benutzernamen Vollberechtigung hinzu, und dann funktionierte es.

Dieser Vorfall hat mich dazu gebracht, diese Frage zu stellen. Wie kann ich sicher wissen, unter welchem ​​Konto eine Aktion ausgeführt wird? Ich dachte, die Datenbank-Engine würde das Anhängen einer Datenbank übernehmen, aber das ist anscheinend nicht der Fall!

Außerdem scheint mein Benutzername nach dem Anhängen der Datenbank aus der Sicherheitsliste entfernt worden zu sein! Ich kann mir also vorstellen, dass ich, wenn ich die Datenbank trenne, meine Berechtigungen für die Dateien erneut zurücksetzen muss, bevor ich die Datenbank erneut anhängen kann.

Antwort1

Es sieht so aus, als ob SSMS diese Verwirrung verursacht. Ich vermute, dass die Auswahl der Dateien in einem Dialogfeld bedeutet, dass das Konto, unter dem SSMS ausgeführt wird, auch Berechtigungen für die Datei benötigt.

Solange das Dienstkonto über die Berechtigung für die Datei verfügt, sollten Sie die Datenbank mit T-SQL anhängen können.

Versuchen Sie es mit demsp_ anhängen _dbSie müssen sich als sa anmelden oder verwendenBenutzer festlegen oder verwenden Sie dieDATENBANK ERSTELLEN... ZUM ANBRINGEN

Wenn du wirklichmussVerwenden Sie SSMS und der Gedanke an T-SQL bringt Sie zum Kotzen. Erstellen Sie dann ein Benutzerkonto, unter dem der SQL Server-Dienst ausgeführt werden soll, und verwenden Sie dann dieses Konto, um SSMS zu starten.

Antwort2

Wenn Sie den Namen der ausführbaren Datei kennen, wird Ihnen auf der Registerkarte „Prozesse“ des Task-Managers der Benutzername angezeigt, der diese Datei ausführt.

Antwort3

Die Antwort habe ich hier gefunden:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html

Die entsprechende SQL Server-Dokumentation finden Sie hier:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
„Wenn Sie eine Datenbank trennen oder anfügen, versucht das Datenbankmodul, sich als Windows-Konto der Verbindung auszugeben, über die der Vorgang ausgeführt wird, um sicherzustellen, dass das Konto über die Berechtigung zum Zugriff auf die Datenbank und die Protokolldateien verfügt. Bei Konten mit gemischter Sicherheit, die SQL Server-Anmeldungen verwenden, kann die Identitätsübernahme fehlschlagen.“

Außerdem heißt es dort eindeutig: „Dateizugriffsberechtigungen werden während der folgenden Datenbankvorgänge festgelegt: Erstellen, Anhängen, Trennen, Ändern zum Hinzufügen einer neuen Datei, Sichern oder Wiederherstellen.“

Offensichtlich muss ich das Handbuch zum Lesen lesen, haha.

verwandte Informationen