Jak mogę zmienić domyślną bazę danych w SQL Server bez korzystania z MS SQL Server Management Studio?

166

Usunąłem bazę danych z SQL Server, jednak okazuje się, że mój login był ustawiony na używanie usuniętej bazy danych jako domyślny. Mogę połączyć się z SQL Server Management Studio, używając przycisku „Opcje” w oknie połączenia i wybierając „master” jako bazę danych do połączenia. Jednak za każdym razem, gdy próbuję cokolwiek zrobić w eksploratorze obiektów, próbuje połączyć się przy użyciu mojej domyślnej bazy danych i kończy się niepowodzeniem.

Czy ktoś wie, jak ustawić domyślną bazę danych bez korzystania z eksploratora obiektów ?

Martin Brown
źródło

Odpowiedzi:

38

Alternatywą dla sp_defaultdb (która zostanie usunięta w przyszłej wersji Microsoft SQL Server ) może być ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Uwaga: w przeciwieństwie do sp_defaultdbrozwiązania nazwy użytkowników i bazy danych są podawane bez cudzysłowów. Nawiasy są potrzebne, jeśli nazwa ma specjalne znaki (najczęstszym przykładem jest użytkownik domeny, który ma nazwę domena \ nazwa użytkownika i nie będzie działać bez nawiasów).

Marek
źródło
1
Cóż, to pytanie jest teraz trochę stare. W tym czasie używałem SQL 2005. Alter Login nie został dodany aż do wersji 2008.
Martin Brown
@MartinBrown Tak, używam sp_deafultdbod wieków. Zaskoczyło mnie, że jest „nowy” sposób.
Marek
Uwaga: pojedyncze cudzysłowy nie są potrzebne wokół pól my_user_name lub bazy danych i mogą powodować błąd. Oczywiste dla doświadczonych rąk, ale może nie dla tych, którzy robią to okazjonalnie. Nawiasy kwadratowe są opcjonalne, jeśli pola reprezentują ciągły tekst.
iokevins
Łączę się z bazą danych PROD przez grupę, więc nie mam indywidualnego Loginu na serwerze, przy próbie uruchomienia powyższego pojawia się komunikat "Nie można zmienić loginu 'DOMAIN \ myuser' bo on nie istnieje lub Ty nie mają pozwolenia. ”. Co gorsza, jestem w wielu grupach, ponieważ każda z nich daje mi określony dostęp do jednej z wielu baz danych na serwerze. propozycje?
matao
1
Aby dowiedzieć się, jaka jest domyślna baza danych logowania: wybierz nazwę, default_database_name z sys.server_principals;
DocOc
215

Możesz ustawić domyślną bazę danych za pomocą systemowej procedury składowanej sp_defaultdb. Zaloguj się tak, jak to zrobiłeś, a następnie kliknij przycisk Nowe zapytanie. Następnie po prostu uruchom polecenie sp_defaultdb w następujący sposób:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Martin Brown
źródło
Wielkie dzięki. Działało jak urok (i nauczył mnie o dialogu „Opcje”, aby określić db).
penderi
To pytanie wywołało pytanie o meta
abel
1
Nie działa tak dobrze, jeśli jesteś w grupie AD i nie chcesz zmieniać domyślnej bazy danych dla dziesiątek innych programistów.
DOK,
@DOK: Ale przypuszczam, że jeśli twoje logowanie jest zepsute w ten sposób, wszyscy inni programiści są. Więc naprawienie tego dla nich wszystkich z pewnością byłoby dobrą rzeczą?
Martin Brown
Cóż, w tej konkretnej instancji SQL Server jest kilkanaście różnych baz danych. Wszyscy chcielibyśmy mieć inną domyślną bazę danych. Gdybyśmy utworzyli inną grupę użytkowników dla każdej bazy danych, aby mogła mieć żądaną domyślną bazę danych, wszyscy musielibyśmy znajdować się w kilku różnych grupach użytkowników, gdybyśmy chcieli zobaczyć różne bazy danych, a wtedy stracilibyśmy żądaną domyślną bazę danych. Chciałbym, żeby w Management Studio był sposób na naprawienie domyślnej bazy danych, ale jak dotąd nie znalazłem rozwiązania, które faktycznie działa.
DOK
49

Aby to zrobić w sposób GUI, musisz przejść do edycji swojego loginu. Jedną z jego właściwości jest domyślna baza danych używana do tego logowania. Listę loginów można znaleźć w węźle Logins w węźle Security. Następnie wybierz swój login i kliknij prawym przyciskiem myszy i wybierz Właściwości. Zmień domyślną bazę danych, a Twoje życie będzie lepsze!

Zauważ, że ktoś z uprawnieniami administratora sysadmin musi mieć możliwość zalogowania się, aby to zrobić lub uruchomić zapytanie z poprzedniego postu.

Marcus Erickson
źródło
to działa dobrze! po prostu wpisałem „master” db zamiast „default”.
około
1
Problem, który miałem, polegał na tym, że byłem administratorem systemu i usunąłem bazę danych, którą ustawiłem jako domyślną, i jako taka nie mogłem nawet dostać się do tego okna dialogowego.
Martin Brown
@MartinBrown niech tak będzie, ale nie upuściłem żadnych stolików i nadal byłem prowadzony do twojego pytania, ale czułem się bardziej komfortowo dzięki rozwiązaniu GUI.
djv
41

Dzięki temu wpisowi znalazłem łatwiejszą odpowiedź:

  1. Otwórz Sql Server Management Studio

  2. Idź do Object Explorer -> Security -> Logins

  3. Kliknij prawym przyciskiem myszy login i wybierz właściwości

  4. W oknie właściwości zmień domyślną bazę danych i kliknij OK.

Mattijs
źródło
1
Witamy w StackOverflow i dziękujemy za udzielenie odpowiedzi. Możesz rzucić okiem na funkcje edytora Markdown, aby móc formatować bloki kodu, listy itp .: stackoverflow.com/editing-help . Zredagowałem Twoją odpowiedź, aby poprawić formatowanie.
Paul Turner,
Cały sens tego pytania polega na tym, że to, co opisałeś, nie działa, jeśli usunąłeś domyślną bazę danych dla własnego konta logowania. W moim przypadku byłem jedynym administratorem w systemie, więc nie mogłem też użyć cudzego konta, aby osiągnąć ten sam efekt.
Martin Brown
@Mattijs Mam nadzieję, że przeczytałeś ostatnią linijkę pytania „Czy ktoś wie, jak ustawić moją domyślną bazę danych bez korzystania z eksploratora obiektów?”. Właśnie o to prosiłeś.
Rohit Vipin Mathews
2
To mogło nie odpowiadać na pytanie OP, ale odpowiadało na moje. To przydatna odpowiedź.
CJ Dennis,
1
Nie jest to możliwe w Azure Databases: /
Squazz
14

Jeśli nie masz uprawnień do zmiany domyślnej bazy danych, możesz ręcznie wybrać inną bazę danych u góry zapytań ...

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

Będzie działać tak długo, jak masz uprawnienia do drugiej bazy danych

Greg B.
źródło
8
  1. Kliknij ikonę Zmień połączenie
  2. Kliknij Opcje <<
  3. Wybierz bazę danych z listy rozwijanej Połącz z bazą danych
Ravishankar S.
źródło
Z jakiegoś powodu zadziałało to w niektórych przypadkach, a w innych nie.
levininja
3

Wolę również ALTER LOGINPolecenie w zaakceptowanej odpowiedzi i opisanej tutaj

Ale dla miłośnika GUI

  1. Przejdź do [INSTANCJA SERWERA] -> Bezpieczeństwo -> Loginy -> [TWÓJ LOGIN]
  2. Kliknij prawym przyciskiem myszy [TWÓJ LOGIN]
  3. Zaktualizuj opcję domyślnej bazy danych u dołu strony

Masz dość czytania !!! spójrz tylko na następujące

wprowadź opis obrazu tutaj

Mubaszar
źródło
0

To może, ale nie musi, odpowiadać dokładnie na pytanie, ale napotkałem ten problem (i pytanie), kiedy zmieniłem swoje konto, aby mieć nową bazę danych, którą utworzyłem jako moją „domyślną bazę danych”. Potem usunąłem tę bazę danych i chciałem przetestować od podstaw mój skrypt tworzenia. Wylogowałem się z SSMS i zamierzałem wrócić, ale odmówiono mi - nie można zalogować się do domyślnej bazy danych, ponieważ był to błąd. D'oh!

To, co zrobiłem, to w oknie dialogowym logowania do SSMS przejść do opcji, właściwości połączenia, a następnie wpisać masterw polu „Połącz z bazą danych”. Kliknij Połącz. Wpadłem. Stamtąd możesz uruchomić polecenie, aby:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO
vapcguy
źródło
-1

Jeśli używasz uwierzytelniania systemu Windows i nie znasz hasła do logowania się jako użytkownik za pomocą nazwy użytkownika i hasła, możesz to zrobić: na ekranie logowania w SSMS kliknij opcje w prawym dolnym rogu, a następnie przejdź do zakładki właściwości połączenia . Następnie możesz ręcznie wpisać nazwę innej bazy danych, do której masz dostęp, w miejscu, w którym jest napisane, co pozwoli ci się połączyć. Następnie postępuj zgodnie z innymi poradami dotyczącymi zmiany domyślnej bazy danych

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Adam Diament
źródło