Як я можу змінити базу даних за замовчуванням у SQL Server без використання MS Studio SQL Server Management Studio?


166

Я скинув базу даних із SQL Server, однак виявляється, що мій логін був встановлений для використання скинутої бази даних за замовчуванням. Я можу підключитися до студії управління SQL Server за допомогою кнопки "параметри" у діалоговому вікні підключення та вибравши "майстер" як базу даних, до якої потрібно підключитися. Однак кожен раз, коли я намагаюся зробити що-небудь в провіднику об'єктів, він намагається підключитися за допомогою моєї бази даних за замовчуванням і не вдається.

Хтось знає, як встановити мою базу даних за замовчуванням, не використовуючи провідник об’єктів ?

Відповіді:


38

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

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

Примітка: на відміну від користувача, sp_defaultdbрішення імена бази даних надаються без лапок. Дужки потрібні, якщо в імені були спеціальні символи (найчастішим прикладом буде користувач домену, який є домен \ ім'я користувача і не працюватиме без дужок).


1
Ну це питання зараз старіє. У той час, коли я використовував SQL 2005. Alter Login не був доданий до версії 2008 року.
Мартін Браун

@MartinBrown Так, я використовую sp_deafultdbпротягом століть. Я був здивований, що є "новий" спосіб.
Марек

Примітка: окремі лапки не потрібні навколо полів my_user_name або бази даних і можуть спричинити помилку. Зрозуміло для досвідчених рук, але, можливо, не так для тих, хто робить це час від часу. Квадратні дужки необов’язкові, якщо поля представляють суміжний текст.
iokevins

Я підключаюсь до бази даних PROD через групу, тому у мене немає індивідуального входу на сервер, коли я намагаюся запустити вище, я отримую "Не можу змінити логін" DOMAIN \ myuser ", оскільки його немає або ви не мають дозволу. " ще гірше, що я в декількох групах, тому що кожна дає мені певний доступ до однієї з безлічі БД на сервері. пропозиції?
матао

1
Щоб дізнатись, що таке база даних за замовчуванням для входу: виберіть ім'я, ім'я_дані_задачі_назви з sys.server_principals;
DocOc

215

Що ви можете зробити, це встановити базу даних за замовчуванням за допомогою збереженої процедури sp_defaultdb у системі. Увійдіть, як ви зробили, а потім натисніть кнопку Новий запит. Після цього просто запустіть команду sp_defaultdb наступним чином:

Exec sp_defaultdb @loginame='login', @defdb='master' 

Дякую справді. Працював як шарм (і навчив мене про діалог "Параметри", щоб вказати db).
penderi

Це запитання порушило питання про мета
абел

1
Не працює настільки добре, якщо ви в групі оголошень і не хочете змінювати базу даних за замовчуванням для десятків інших розробників.
DOK

@DOK: Але я б припустив, що якщо ваш вхід таким чином порушений, то це стосується і всіх інших розробників. Тож виправити це для всіх них, безумовно, було б хорошою справою?
Мартін Браун

Ну, є десяток різних баз даних у цьому конкретному екземплярі SQL Server. Ми всі хотіли б іншої бази даних за замовчуванням. Якби ми створили різну групу користувачів для кожної бази даних, щоб вона могла мати бажану базу даних за замовчуванням, тоді ми всі мали б бути у купі різних груп користувачів, якби ми хотіли бачити різні бази даних, і тоді ми втратили б бажаний за замовчуванням. Мені б хотілося, щоб у студії менеджменту був спосіб виправити базу даних за замовчуванням, але поки що я не знайшов підходу, який насправді працює.
DOK

49

Щоб зробити це за допомогою графічного інтерфейсу, вам потрібно перейти до редагування вашого логіна. Однією з його властивостей є база даних за замовчуванням, яка використовується для цього входу. Ви можете знайти список входів у вузлі входу під вузлом безпеки. Потім виберіть логін та клацніть правою кнопкою миші та виберіть Властивості. Змініть базу даних за замовчуванням, і ваше життя стане кращим!

Зауважте, що хтось із приватними файлами sysadmin повинен мати можливість увійти, щоб зробити це або виконати запит з попереднього допису.


це прекрасно працює! просто набрав там "master" db замість "default".
apprich

1
Проблема у мене полягала в тому, що я був системним адміністратором і видалив базу даних, яку я встановив за замовчуванням, і як такий не міг навіть дійти до цього діалогового вікна.
Мартін Браун

@MartinBrown, як би там не було, я не відкидав жодних таблиць, і мене все ще привели до вашого питання, але я почував себе більш комфортно з рішенням GUI.
djv

41

Завдяки цій публікації я знайшов простішу відповідь:

  1. Відкрийте студію керування сервером Sql

  2. Перейдіть до об’єкта Explorer -> Безпека -> Логіни

  3. Клацніть правою кнопкою миші на вхід та виберіть властивості

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


1
Ласкаво просимо до StackOverflow та дякуємо за надану відповідь. Ви можете ознайомитись з можливостями редактора Markdown, щоб ви могли форматувати кодові блоки, списки тощо: stackoverflow.com/editing-help . Я відредагував вашу відповідь, щоб покращити форматування для вас.
Пол Тернер

Вся суть цього питання полягає в тому, що описане вами не працює, якщо ви видалили базу даних за замовчуванням для власного облікового запису. У моєму конкретному випадку я був єдиним адміністратором в системі, тому не міг використовувати й чужий обліковий запис для досягнення того ж ефекту.
Мартін Браун

@Mattijs Сподіваюсь, ви прочитали цей останній рядок питання "Хтось знає, як встановити мою базу даних за замовчуванням, не використовуючи провідник об'єктів?". Це саме те, що ви попросили зробити.
Rohit Vipin Mathews

2
Це може не відповісти на питання ОП, але воно відповіло моє. Це корисна відповідь.
CJ Dennis

1
Це неможливо в базах даних Azure: /
Squazz

14

Якщо у вас немає дозволів змінити стандартну БД, ви можете вручну вибрати інший БД у верхній частині запитів ...

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

Працюватиме до тих пір, поки у вас буде дозвіл на іншу БД


8
  1. Клацніть на іконку Змінити підключення
  2. Клацніть Параметри <<
  3. Виберіть db у спадному меню "Підключення до бази даних"

Чомусь це працювало для мене в деяких випадках, а не в інших.
levininja

3

Я також віддаю перевагу ALTER LOGINCommand, як у прийнятій відповіді та описано тут

Але для любителя GUI

  1. Перейдіть до [СЕРВЕРНА ІНСТАНЦІЯ] -> Безпека -> Вхід -> [ВАШ ВХОД]
  2. Клацніть правою кнопкою миші на [ВХОД]
  3. Оновіть параметр бази даних за замовчуванням у нижній частині сторінки

Набридло читати !!! просто подивіться на наступне

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



0

Це може чи не точно відповідати на питання, але я зіткнувся з цим питанням (і питанням), коли змінив обліковий запис, щоб створити нову базу даних, яку я створив як свою "базу даних за замовчуванням". Потім я видалив цю базу даних і хотів перевірити свій сценарій створення з нуля. Я вийшов із SSMS і збирався повернутися, але мені було відмовлено - помилка не могла увійти в базу даних за замовчуванням. D'oh!

Що я зробив, у діалоговому вікні входу для SSMS перейдіть до Опції, Властивості підключення, а потім введіть masterкомбобокс "Підключення до бази даних". Клацніть Підключити. Взяв мене. Звідти ви можете запустити команду:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO

-1

Якщо ви використовуєте автентифікацію Windows, і ви не знаєте пароль для входу як користувач через ім'я користувача та пароль, ви можете це зробити: на екрані входу в SSMS натисніть параметри в нижньому правому куті, а потім перейдіть на вкладку властивостей підключення. . Тоді ви можете вручну ввести ім’я іншої бази даних, до якої ви маєте доступ, там, де це написано, що дозволить вам підключитися. Потім дотримуйтесь інших порад щодо зміни бази даних за замовчуванням

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.