Wie kann ich meine Standarddatenbank in SQL Server ändern, ohne MS SQL Server Management Studio zu verwenden?

166

Ich habe eine Datenbank von SQL Server gelöscht. Es stellte sich jedoch heraus, dass bei meiner Anmeldung die gelöschte Datenbank als Standard verwendet wurde. Ich kann eine Verbindung zu SQL Server Management Studio herstellen, indem ich im Verbindungsdialog die Schaltfläche "Optionen" verwende und "Master" als Datenbank für die Verbindung auswähle. Wenn ich jedoch versuche, im Objekt-Explorer etwas zu tun, versucht es, eine Verbindung mit meiner Standarddatenbank herzustellen, und schlägt fehl.

Weiß jemand, wie ich meine Standarddatenbank ohne Verwendung des Objekt-Explorers festlegen kann ?

Martin Brown
quelle

Antworten:

38

Eine Alternative zu sp_defaultdb (die in einer zukünftigen Version von Microsoft SQL Server entfernt wird ) könnte sein ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Hinweis: Im Gegensatz zur sp_defaultdbLösung werden Benutzer- und Datenbanknamen ohne Anführungszeichen angegeben. Klammern werden benötigt, wenn der Name spezielle Zeichen enthält (das häufigste Beispiel ist der Domänenbenutzer, der Domäne \ Benutzername ist und ohne Klammern nicht funktioniert).

Marek
quelle
1
Nun, diese Frage wird jetzt ein bisschen alt. Zu der Zeit, als ich SQL 2005 verwendete, wurde Alter Login erst in der Version 2008 hinzugefügt.
Martin Brown
@ MartinBrown Ja, ich benutze sp_deafultdbseit Ewigkeiten. Ich war überrascht, dass es einen "neuen" Weg gibt.
Marek
Hinweis: Um die Felder my_user_name oder database sind keine einfachen Anführungszeichen erforderlich, die einen Fehler verursachen können. Offensichtlich für erfahrene Hände, aber vielleicht nicht für diejenigen, die dies gelegentlich tun. Eckige Klammern optional, wenn Felder zusammenhängenden Text darstellen.
Iokevins
Ich verbinde mich über eine Gruppe mit der PROD-Datenbank, daher habe ich kein individuelles Login auf dem Server. Wenn ich versuche, das oben genannte auszuführen, wird "Kann das Login 'DOMAIN \ myuser' nicht ändern, da es nicht existiert oder Sie habe keine Erlaubnis. ". Schlimmer noch, ich bin in mehreren Gruppen, weil jede mir spezifischen Zugriff auf eine der vielen DBs auf dem Server gewährt. Vorschläge?
Matao
1
So ermitteln Sie die Standarddatenbank eines Logins: Wählen Sie name, default_database_name aus sys.server_principals aus.
DocOc
215

Sie können Ihre Standarddatenbank mithilfe der gespeicherten Systemprozedur sp_defaultdb festlegen. Melden Sie sich wie bisher an und klicken Sie dann auf die Schaltfläche Neue Abfrage. Führen Sie danach einfach den Befehl sp_defaultdb wie folgt aus:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
quelle
Vielen Dank. Arbeitete wie ein Zauber (und brachte mir den Dialog 'Optionen' bei, um db anzugeben).
Penderi
Diese Frage hat eine Frage zu Meta
Abel
1
Funktioniert nicht so gut, wenn Sie in einer AD-Gruppe sind und die Standarddatenbank für Dutzende anderer Entwickler nicht ändern möchten.
DOK
@DOK: Aber ich würde annehmen, dass, wenn Ihr Login auf diese Weise kaputt ist, auch alle anderen Entwickler. Es wäre also sicher eine gute Sache, es für alle zu reparieren?
Martin Brown
Nun, es gibt ein Dutzend verschiedene Datenbanken auf dieser bestimmten SQL Server-Instanz. Wir würden alle eine andere Standarddatenbank wollen. Wenn wir für jede Datenbank eine andere Benutzergruppe erstellen würden, damit sie die gewünschte Standarddatenbank haben könnte, müssten wir uns alle in einer Reihe verschiedener Benutzergruppen befinden, wenn wir verschiedene Datenbanken sehen möchten, und dann würden wir den gewünschten Standard verlieren. Ich wünschte, es gäbe in Management Studio eine Möglichkeit, eine Standarddatenbank zu reparieren, aber bisher habe ich keinen Ansatz gefunden, der tatsächlich funktioniert.
DOK
49

Um dies auf die GUI-Art zu tun, müssen Sie Ihr Login bearbeiten. Eine seiner Eigenschaften ist die Standarddatenbank, die für diese Anmeldung verwendet wird. Die Liste der Anmeldungen finden Sie unter dem Knoten Anmeldungen unter dem Knoten Sicherheit. Wählen Sie dann Ihr Login aus, klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaften. Ändern Sie die Standarddatenbank und Ihr Leben wird besser!

Beachten Sie, dass sich jemand mit sysadmin-Berechtigungen anmelden muss, um dies zu tun oder die Abfrage aus dem vorherigen Beitrag auszuführen.

Marcus Erickson
quelle
das funktioniert gut! habe dort einfach "master" db statt "default" eingegeben.
Apprich
1
Das Problem, das ich hatte, war, dass ich der Systemadministrator war und die Datenbank gelöscht hatte, die ich auf Standard gesetzt hatte, und als solche nicht einmal zu diesem Dialog gelangen konnte.
Martin Brown
@MartinBrown wie auch immer, ich hatte keine Tabellen gelöscht und wurde immer noch zu Ihrer Frage geführt, fühlte mich aber mit der GUI-Lösung wohler.
DJV
41

Dank dieses Beitrags fand ich eine einfachere Antwort:

  1. Öffnen Sie SQL Server Management Studio

  2. Gehen Sie zu Objekt Explorer -> Sicherheit -> Anmeldungen

  3. Klicken Sie mit der rechten Maustaste auf das Login und wählen Sie Eigenschaften aus

  4. Ändern Sie im Eigenschaftenfenster die Standarddatenbank und klicken Sie auf OK.

Mattijs
quelle
1
Willkommen bei StackOverflow und vielen Dank für Ihre Antwort. Vielleicht möchten Sie sich die Funktionen des Markdown-Editors ansehen, um Codeblöcke, Listen usw. zu formatieren : stackoverflow.com/editing-help . Ich habe Ihre Antwort bearbeitet, um die Formatierung für Sie zu verbessern.
Paul Turner
Der springende Punkt dieser Frage ist, dass das, was Sie beschrieben haben, nicht funktioniert, wenn Sie die Standarddatenbank für Ihr eigenes Anmeldekonto gelöscht haben . In meinem speziellen Fall war ich der einzige Administrator im System und konnte daher nicht das Konto eines anderen Benutzers verwenden, um den gleichen Effekt zu erzielen.
Martin Brown
@Mattijs Ich hoffe, Sie haben diese letzte Zeile der Frage "Weiß jemand, wie ich meine Standarddatenbank ohne Verwendung des Objekt-Explorers festlegen kann?" Gelesen. Das ist genau das, worum Sie gebeten haben.
Rohit Vipin Mathews
2
Dies hat möglicherweise die Frage des OP nicht beantwortet, aber meine. Es ist eine nützliche Antwort.
CJ Dennis
1
Dies ist bei Azure-Datenbanken nicht möglich: /
Squazz
14

Wenn Sie keine Berechtigung zum Ändern Ihrer Standard-Datenbank haben, können Sie oben in Ihren Abfragen manuell eine andere Datenbank auswählen ...

USE [SomeOtherDb]
SELECT 'I am now using a different DB'

Funktioniert, solange Sie die Berechtigung für die andere Datenbank haben

Greg B.
quelle
8
  1. Klicken Sie auf das Symbol Verbindung ändern
  2. Klicken Sie auf Optionen <<
  3. Wählen Sie die Datenbank aus der Dropdown-Liste Mit Datenbank verbinden aus
Ravishankar S.
quelle
Aus irgendeinem Grund hat dies in einigen Fällen bei mir funktioniert und in anderen nicht.
Levininja
3

Ich bevorzuge auch ALTER LOGINCommand wie in der akzeptierten Antwort und hier beschrieben

Aber für GUI-Liebhaber

  1. Gehen Sie zu [SERVER INSTANCE] -> Sicherheit -> Logins -> [IHR LOGIN]
  2. Klicken Sie mit der rechten Maustaste auf [IHR LOGIN].
  3. Aktualisieren Sie die Standarddatenbankoption unten auf der Seite

Müde vom Lesen !!! schau dir nur folgendes an

Geben Sie hier die Bildbeschreibung ein

Mubashar
quelle
0

Dies kann die Frage möglicherweise nicht genau beantworten, aber ich bin auf dieses Problem (und diese Frage) gestoßen, als ich mein Konto geändert habe, um eine neue Datenbank zu haben, die ich als meine "Standarddatenbank" erstellt habe. Dann habe ich diese Datenbank gelöscht und wollte mein Erstellungsskript von Grund auf testen. Ich habe mich von SSMS abgemeldet und wollte wieder einsteigen, wurde aber abgelehnt - ich konnte mich nicht bei der Standarddatenbank anmelden, war der Fehler. D'oh!

Gehen Sie im Anmeldedialog für SSMS zu Optionen, Verbindungseigenschaften und geben Sie in das Kombinationsfeld master"Mit Datenbank verbinden" ein. Klicken Sie auf Verbinden. Habe mich reingebracht. Von dort aus kannst du den Befehl ausführen zu:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO
vapcguy
quelle
-1

Wenn Sie die Windows-Authentifizierung verwenden und kein Kennwort kennen, um sich als Benutzer über Benutzername und Kennwort anzumelden, können Sie dies tun: Klicken Sie im Anmeldebildschirm auf SSMS unten rechts auf Optionen und wechseln Sie dann zur Registerkarte Verbindungseigenschaften . Anschließend können Sie manuell den Namen einer anderen Datenbank eingeben, auf die Sie Zugriff haben, und zwar dort, wo angegeben ist, damit Sie eine Verbindung herstellen können. Befolgen Sie dann die anderen Hinweise zum Ändern Ihrer Standarddatenbank

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
quelle