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





Что вы можете сделать, так это установить базу данных по умолчанию с помощью системной хранимой процедуры sp_defaultdb. Войдите в систему, как вы это сделали, и нажмите кнопку «Новый запрос». После этого просто запустите команду sp_defaultdb следующим образом:
Exec sp_defaultdb @loginame='login', @defdb='master'
Этот вопрос поднял вопрос о мета
Не работает так хорошо, если вы находитесь в группе AD и не хотите менять базу данных по умолчанию для десятков других разработчиков.
@DOK: Но я предполагаю, что если ваш логин нарушен таким образом, то же самое и со всеми другими разработчиками. Значит, исправить это для всех было бы неплохо?
Что ж, на этом конкретном экземпляре SQL Server есть дюжина различных баз данных. Нам всем нужна другая база данных по умолчанию. Если бы мы создали разные группы пользователей для каждой базы данных, чтобы она могла иметь желаемую базу данных по умолчанию, тогда нам всем пришлось бы находиться в кучу разных групп пользователей, если бы мы хотели видеть разные базы данных, и тогда мы потеряли бы желаемое значение по умолчанию. Хотелось бы, чтобы в Management Studio был способ исправить базу данных по умолчанию, но пока я не нашел подход, который действительно работает.
@DOK: рассматривали ли вы возможность предоставить каждому разработчику собственный логин в SQL Server, а затем использовать роли SQL Server вместо групп AD?
@MartinBrown Десятки разработчиков, десятки баз данных, разработчики (подрядчики) постоянно приходят и уходят, переходя между проектами. Кто-то должен будет управлять всеми этими логинами и ролями. В целях безопасности вы хотите ограничить доступ для тех, кому это нужно. Таким образом, разработчик может ждать, пока администратор предоставит разрешение на другую базу данных. Между тем, когда приходят аудиторы, они обвиняют вас в устаревших разрешениях для людей, которым они больше не нужны. Иногда лучше использовать самый простой подход: добавить или удалить человека в группы AD. Не существует универсального подхода.
Чтобы сделать это с помощью графического интерфейса, вам нужно изменить свой логин. Одно из его свойств - это база данных по умолчанию, используемая для этого входа в систему. Вы можете найти список учетных записей в узле «Имена входа» в узле «Безопасность». Затем выберите свой логин, щелкните правой кнопкой мыши и выберите «Свойства». Измените базу данных по умолчанию и ваша жизнь станет лучше!
Обратите внимание, что кто-то с правами системного администратора должен иметь возможность войти в систему, чтобы сделать это или выполнить запрос из предыдущего сообщения.
это отлично работает! просто набрал там "master" db вместо "default".
Проблема, с которой я столкнулся, заключалась в том, что я был системным администратором и удалил базу данных, которую я установил по умолчанию, и поэтому не мог даже добраться до этого диалогового окна.
@MartinBrown, как бы то ни было, я не уронил ни одной таблицы, и меня все еще привели к вашему вопросу, но я чувствовал себя более комфортно с решением с графическим интерфейсом.
Если у вас нет прав на изменение БД по умолчанию, вы можете вручную выбрать другую БД в верхней части запросов ...
USE [SomeOtherDb]
SELECT 'I am now using a different DB'
Будет работать, пока у вас есть разрешение на БД Другие
Благодаря эта почта я нашел более простой ответ:
Откройте Sql Server Management Studio
Перейдите в Обозреватель объектов -> Безопасность -> Логины
Щелкните правой кнопкой мыши имя входа и выберите свойства
И в окне свойств измените базу данных по умолчанию и нажмите ОК.
Добро пожаловать в StackOverflow и благодарим за ответ. Возможно, вы захотите взглянуть на функции редактора Markdown, чтобы вы могли форматировать блоки кода, списки и т.д .: stackoverflow.com/editing-help. Я отредактировал ваш ответ, чтобы улучшить форматирование для вас.
Весь смысл этого вопроса в том, что то, что вы описали, не работает, если вы удалили базу данных по умолчанию для учетной записи твой собственный. В моем конкретном случае я был единственным администратором в системе, поэтому не мог использовать чужую учетную запись для достижения того же эффекта.
@Mattijs Надеюсь, вы прочитали последнюю строчку вопроса «Кто-нибудь знает, как установить мою базу данных по умолчанию без использования проводника объектов?». Это именно то, что вы просили сделать.
Возможно, это не ответило на вопрос ОП, но ответило на мой. Это полезный ответ.
Это невозможно в базах данных Azure: /
По какой-то причине в некоторых случаях это сработало для меня, а в других - нет.
Если вы не можете войти в SQL Server:
sqlcmd –E -S InstanceName –d master
Если вы используете проверку подлинности Windows и не знаете пароль для входа в систему в качестве пользователя с помощью имени пользователя и пароля, вы можете сделать это: на экране входа в систему в SSMS щелкните параметры в правом нижнем углу, затем перейдите на вкладку свойств подключения. . Затем вы можете ввести вручную имя другой базы данных, к которой у вас есть доступ, там, где написано, что позволит вам подключиться. Затем следуйте другому совету по изменению базы данных по умолчанию.
Альтернативой sp_defaultdb (которая будет удален в будущей версии Microsoft SQL Server) может быть ALTER LOGIN:
ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]
Примечание: в отличие от решения sp_defaultdb имена пользователей и базы данных указаны без кавычек. Скобки необходимы, если в имени были специальные символы (наиболее распространенным примером будет пользователь домена, который является domain\username и не будет работать без скобок).
Что ж, этот вопрос уже устарел. В то время я использовал SQL 2005. Alter Login не добавлялся до версии 2008 года.
@MartinBrown Да, я использую sp_deafultdb целую вечность. Я был удивлен, что есть «новый» способ.
Примечание: одинарные кавычки вокруг полей my_user_name или базы данных не требуются и могут вызвать ошибку. Это очевидно для опытных рук, но, возможно, не так для тех, кто делает это время от времени. Квадратные скобки необязательны, если поля представляют собой непрерывный текст.
Я подключаюсь к базе данных PROD через группу, поэтому у меня нет индивидуального входа на сервер, когда я пытаюсь запустить указанное выше, я получаю «Невозможно изменить имя входа 'DOMAIN \ myuser', потому что он не существует, или вы нет разрешения. ". Хуже того, я нахожусь в нескольких группах, потому что каждая дает мне определенный доступ к одной из многих БД на сервере. предложения?
Чтобы узнать, что такое база данных по умолчанию для входа в систему: выберите имя, default_database_name из sys.server_principals;
@matao Вы можете сделать это, заключив в скобки пользователя (и базу данных, если необходимо): ALTER LOGIN [DOMAIN \ User] WITH DEFAULT_DATABASE = [SERVER \ Database]
Это может или не может точно ответить на вопрос, но я столкнулся с этой проблемой (и вопросом), когда изменил свою учетную запись, чтобы иметь новую базу данных, которую я создал в качестве моей «базы данных по умолчанию». Затем я удалил эту базу данных и захотел протестировать свой сценарий создания с нуля. Я вышел из SSMS и собирался вернуться, но мне было отказано - не могу войти в базу данных по умолчанию, это была ошибка. Ооо!
Я сделал следующее: в диалоговом окне входа в SSMS перейдите в «Параметры», «Свойства подключения», затем введите master в поле со списком «Подключиться к базе данных». Щелкните Подключиться. Заставил меня. Оттуда вы можете запустить команду, чтобы:
ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO
Я также предпочитаю команду ALTER LOGIN, как в принятом ответе, и описанную здесь
Но для любителя графического интерфейса
Устал читать !!! просто посмотрите на следующие
Нажмите на параметры в диалоговом окне подключения к серверу и в свойствах подключения, вы можете выбрать базу данных для подключения при запуске. Лучше оставить значение по умолчанию, что сделает master по умолчанию. В противном случае вы можете случайно запустить sql не в той базе данных после подключения к базе данных.
Из вопроса: «Я могу подключиться к SQL Server Management Studio, используя кнопку« Параметры »в диалоговом окне подключения и выбрав« master »в качестве базы данных для подключения. Однако всякий раз, когда я пытаюсь что-либо сделать в проводнике объектов, он пытается подключиться, используя мою базу данных по умолчанию, и не удается ». Хотя они, возможно, исправили это с тех пор, это довольно старый вопрос.
Спасибо большое. Работал как шарм (и научил меня диалогу «Параметры» для указания db).