Как я могу изменить базу данных по умолчанию в SQL Server без использования MS SQL Server Management Studio?

166

Я удалил базу данных с SQL Server, однако оказалось, что мой логин был настроен на использование удаленной базы данных по умолчанию. Я могу подключиться к SQL Server Management Studio, используя кнопку «Параметры» в диалоговом окне подключения и выбрав «мастер» в качестве базы данных для подключения. Однако всякий раз, когда я пытаюсь что-либо сделать в обозревателе объектов, он пытается подключиться, используя базу данных по умолчанию, и завершается неудачно.

Кто-нибудь знает, как установить базу данных по умолчанию без использования проводника объектов ?

Мартин Браун
источник

Ответы:

38

Альтернативой sp_defaultdb (которая будет удалена в будущей версии Microsoft SQL Server ) может быть ALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Примечание: в отличие от sp_defaultdbрешения имена пользователей и баз данных указываются без кавычек. Скобки необходимы, если имя имеет специальные символы (наиболее распространенным примером будет user домена, который является доменом \ username и не будет работать без скобок).

Marek
источник
1
Ну, этот вопрос уже немного устарел. В то время я использовал SQL 2005. Alter Login не был добавлен до версии 2008.
Мартин Браун
@MartinBrown Да, я использую sp_deafultdbцелую вечность. Я был удивлен, что есть «новый» способ.
Марек
Примечание: одинарные кавычки не нужны вокруг полей my_user_name или database и могут вызвать ошибку. Очевидно, опытные руки, но, возможно, не так для тех, кто делает это время от времени. Квадратные скобки необязательны, если поля представляют непрерывный текст.
iokevins
Я подключаюсь к базе данных PROD через группу, поэтому у меня нет отдельного логина на сервере, когда я пытаюсь запустить вышеописанное, я получаю «Невозможно изменить логин« DOMAIN \ myuser », потому что он не существует или вы нет разрешения. " еще хуже, что я нахожусь в нескольких группах, потому что каждая из них дает мне определенный доступ к одной из множества БД на сервере. предложения?
19
1
Чтобы узнать, что такое база данных по умолчанию для входа в систему: выберите name, default_database_name из sys.server_principals;
Док
215

Что вы можете сделать, это установить базу данных по умолчанию, используя системную хранимую процедуру sp_defaultdb. Войдите, как вы сделали, а затем нажмите кнопку Новый запрос. После этого просто выполните команду sp_defaultdb следующим образом:

Exec sp_defaultdb @loginame='login', @defdb='master' 
Мартин Браун
источник
Спасибо большое. Работал как талисман (и научил меня диалогу «Опции», чтобы указать db).
Penderi
Этот вопрос поднял вопрос о мете
Авель
1
Не очень хорошо работает, если вы в группе AD и не хотите менять базу данных по умолчанию для десятков других разработчиков.
DOK
@ DOK: Но я бы предположил, что если ваш вход в систему сломан таким же образом, как и все другие разработчики. Так что исправить это для всех них, безусловно, было бы хорошо?
Мартин Браун
На этом конкретном экземпляре SQL Server есть десяток разных баз данных. Нам всем нужна другая база данных по умолчанию. Если бы мы создали отдельную группу пользователей для каждой базы данных, чтобы она могла иметь желаемую базу данных по умолчанию, то нам всем пришлось бы находиться в группе разных групп пользователей, если мы хотим видеть разные базы данных, и тогда мы потеряли бы желаемую настройку по умолчанию. Хотелось бы, чтобы в Management Studio был способ исправить базу данных по умолчанию, но пока я не нашел подход, который действительно работает.
ДОК
49

Чтобы сделать это в графическом интерфейсе, вам нужно отредактировать свой логин. Одним из его свойств является база данных по умолчанию, используемая для этого логина. Вы можете найти список входов в систему в разделе «Вход в систему» ​​в разделе «Безопасность». Затем выберите свой логин и щелкните правой кнопкой мыши и выберите Свойства. Измените базу данных по умолчанию, и ваша жизнь станет лучше!

Обратите внимание, что кто-то с sysadmin privs должен иметь возможность войти в систему, чтобы сделать это или выполнить запрос из предыдущего поста.

Маркус Эриксон
источник
это работает отлично! просто набрал там "master" db вместо "default".
apprich
1
Проблема, с которой я столкнулся, заключалась в том, что я был системным администратором и удалил базу данных, для которой я установил значение по умолчанию, и поэтому даже не смог добраться до этого диалога.
Мартин Браун
@MartinBrown, как бы то ни было, я не убрал ни одной таблицы, и меня все равно привели к вашему вопросу, но я чувствовал себя более комфортно с решением с графическим интерфейсом.
djv
41

Благодаря этому посту я нашел более простой ответ:

  1. Откройте Sql Server Management Studio

  2. Перейти к объекту Explorer -> Безопасность -> Логины

  3. Щелкните правой кнопкой мыши логин и выберите свойства

  4. А в окне свойств измените базу данных по умолчанию и нажмите ОК.

Mattijs
источник
1
Добро пожаловать в StackOverflow и спасибо за ответ. Возможно, вы захотите взглянуть на функции редактора Markdown, чтобы вы могли форматировать блоки кода, списки и т. Д .: stackoverflow.com/editing-help . Я отредактировал ваш ответ, чтобы улучшить форматирование для вас.
Пол Тернер
Суть этого вопроса в том, что описанное вами не работает, если вы удалили базу данных по умолчанию для своей учетной записи. В моем конкретном случае я был единственным администратором в системе, поэтому не мог использовать чужую учетную запись для достижения того же эффекта.
Мартин Браун
@ Mattijs Надеюсь, вы прочитали последнюю строчку вопроса «Кто-нибудь знает, как установить базу данных по умолчанию без использования проводника объектов?». Это то, что вы просили сделать.
Рохит Випин Мэтьюз
2
Возможно, это не ответило на вопрос ОП, но ответило на мой. Это полезный ответ.
CJ Деннис
1
Это невозможно в базах данных Azure: /
Squazz
14

Если у вас нет прав на изменение БД по умолчанию, вы можете вручную выбрать другую БД в верхней части ваших запросов ...

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

Будет работать до тех пор, пока у вас есть разрешение на другую БД

Грег Б
источник
8
  1. Нажмите на иконку Изменить соединение
  2. Нажмите Опции <<
  3. Выберите базу данных из выпадающего списка Connect to database
Равишанкар С
источник
По некоторым причинам это работало для меня в некоторых случаях, а не в других.
Левининя
3

Я также предпочитаю ALTER LOGINКоманду, как в принятом ответе и описано здесь

Но для любителя GUI

  1. Перейдите на [SERVER INSTANCE] -> Security -> Logins -> [YOUR LOGIN]
  2. Щелкните правой кнопкой мыши на [ВАШ ЛОГИН]
  3. Обновите опцию базы данных по умолчанию внизу страницы

Надоело читать !!! просто посмотрите на следующее

введите описание изображения здесь

Mubashar
источник
0

Это может или не может точно ответить на вопрос, но я столкнулся с этой проблемой (и вопросом), когда я изменил свою учетную запись, чтобы иметь новую базу данных, которую я создал как свою «базу данных по умолчанию». Затем я удалил эту базу данных и хотел протестировать сценарий создания с нуля. Я вышел из SSMS и собирался вернуться, но мне было отказано - не удалось войти в базу данных по умолчанию, была ошибка. D'о!

Я сделал следующее: в диалоговом окне входа в систему для SSMS выберите «Параметры», «Свойства подключения», затем введите masterв поле со списком «Подключение к базе данных». Нажмите Подключиться. Получил меня. Оттуда вы можете запустить команду для:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO
vapcguy
источник
-1

Если вы используете проверку подлинности Windows и не знаете пароль для входа в систему в качестве пользователя с помощью имени пользователя и пароля, вы можете сделать это: на экране входа в систему SSMS щелкните параметры в правом нижнем углу, а затем перейдите на вкладку свойств подключения. , Затем вы можете ввести вручную имя другой базы данных, к которой у вас есть доступ, там, где она говорит, что позволит вам подключиться. Затем следуйте другим советам для изменения базы данных по умолчанию

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Адам Диамент
источник