MS SQL Server Management Studioを使用せずにSQL Serverのデフォルトデータベースを変更するにはどうすればよいですか?


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ソリューションとは異なり、ユーザー名とデータベース名は引用符なしで提供されます。名前に特殊文字が含まれている場合は角かっこが必要です(最も一般的な例はdomain \ usernameのドメインユーザーで、角かっこなしでは機能しません)。


1
さて、この質問は少し古くなっています。当時はSQL 2005を使用していました。AlterLoginは2008バージョンまで追加されませんでした。
マーティンブラウン

@MartinBrownはい、私は長い間使用sp_deafultdbしてきました。「新しい」道があることに驚きました。
Marek

注:フィールドmy_user_nameまたはデータベースを囲む単一引用符は不要であり、エラーを引き起こす可能性があります。経験豊富な手には明らかですが、たまにこれを行う人にはわかりません。フィールドが連続したテキストを表す場合は、角括弧はオプションです。
iokevins

グループを介してPRODデータベースに接続しているため、サーバーに個別のログインがありません。上記を実行しようとすると、「ログイン 'DOMAIN \ myuser'が存在しないか、あなたが変更できないため、ログインを変更できません。許可がありません。」さらに悪いことに、私は複数のグループに属しています。それぞれがサーバー上の多数のDBの1つに特定のアクセス権を与えるからです。提案?
マタオ

1
ログインのデフォルトデータベースを見つけるには、次のようにします。sys.server_principalsからname、default_database_nameを選択します。
DocOc

215

実行できることは、sp_defaultdbシステムストアドプロシージャを使用してデフォルトデータベースを設定することです。完了したらログインし、[新しいクエリ]ボタンをクリックします。その後、単に次のようにsp_defaultdbコマンドを実行します。

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

本当にありがとう。魅力のように動作しました(そして、dbを指定するための[オプション]ダイアログについて教えてくれました)。
penderi

この質問により、メタ
アベル

1
ADグループに所属していて、他の何十人もの開発者のデフォルトデータベースを変更したくない場合は、うまく機能しません。
2011年

@DOK:しかし、もしあなたのログインがこのように破壊されれば、他のすべての開発者もそうなると思います。それで、それらすべてのためにそれを修正することは確かに良いことでしょうか?
マーティンブラウン

さて、この特定のSQL Serverインスタンスには12の異なるデータベースがあります。私たちは皆、異なるデフォルトのデータベースが必要です。データベースごとに異なるユーザーグループを作成して、目的のデフォルトデータベースを使用できるようにした場合、異なるデータベースを表示するには、すべてが異なるユーザーグループに属している必要があり、目的のデフォルトが失われます。Management Studioで既定のデータベースを修正する方法があったらいいのにと思っていますが、これまでのところ、実際に機能するアプローチは見つかりませんでした。
DOK

49

GUIで行うには、ログインを編集する必要があります。そのプロパティの1つは、そのログインに使用されるデフォルトのデータベースです。ログインのリストは、[セキュリティ]ノードの下の[ログイン]ノードの下にあります。次に、ログインを選択して右クリックし、[プロパティ]を選択します。デフォルトのデータベースを変更すると、あなたの人生はより良くなります!

sysadmin privsを持つユーザーは、これを行うか、前の投稿のクエリを実行するためにログインできる必要があることに注意してください。


これはうまくいきます!そこで「デフォルト」ではなく「マスター」dbと入力しただけです。
apprich

1
私が抱えていた問題は、自分がシステム管理者であり、デフォルトに設定したデータベースを削除していたため、このダイアログにアクセスできないことでした。
マーティンブラウン

@MartinBrownは、テーブルを削除していなかったため、まだ質問に導かれていましたが、GUIソリューションの方が快適でした。
djv 14年

41

この投稿のおかげで、私はより簡単な答えを見つけました:

  1. SQL Server Management Studioを開く

  2. オブジェクトエクスプローラー->セキュリティ->ログインに移動します。

  3. ログインを右クリックして、プロパティを選択します

  4. プロパティウィンドウでデフォルトデータベースを変更し、[OK]をクリックします。


1
StackOverflowへようこそ。回答を提供していただきありがとうございます。マークダウンエディターの機能を確認して、コードブロックやリストなどをフォーマットできるようにしてください:stackoverflow.com/editing-help。フォーマットを改善するために、回答を編集しました。
ポールターナー

この質問の要点は、自分のログインアカウントのデフォルトデータベースを削除した場合、説明した内容が機能しないことです。私の特定のケースでは、私がシステムの唯一の管理者であったため、他の誰かのアカウントを使用して同じ効果を達成することもできませんでした。
マーティンブラウン

@Mattijs「オブジェクトエクスプローラーを使用せずにデフォルトのデータベースを設定する方法を知っている人はいますか?」という質問の最後の行を読んでください。それはまさにあなたがしたいことです。
Rohit Vipin Mathews 2013

2
これはOPの質問には答えなかったかもしれませんが、私の答えにはなりました。それは有用な答えです。
CJデニス

1
これは、Azureデータベースでは不可能です:/
Squazz

14

デフォルトのDBを変更する権限がない場合は、クエリの上部で別のDBを手動で選択できます...

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

他の DB への権限がある限り機能します


8
  1. 接続の変更アイコンをクリックします
  2. オプションをクリック<<
  3. データベースへの接続ドロップダウンからデータベースを選択します

いくつかの理由で、これは私にとってはうまくいく場合もあれば、うまくいかない場合もあります。
levininja 2017年

3

私はまたALTER LOGIN、受け入れられた回答とここで説明されているように、コマンドを好みます

しかしGUI愛好家には

  1. [サーバーインスタンス]->セキュリティ->ログイン-> [あなたのログイン]に移動します
  2. [YOUR LOGIN]を右クリック
  3. ページの下部にあるデフォルトのデータベースオプションを更新する

読書にうんざりしました!!! 以下を見てください

ここに画像の説明を入力してください



0

これは質問に正確に答えるかどうかはわかりませんが、「デフォルトデータベース」として作成した新しいデータベースを使用するようにアカウントを変更したときに、この問題(および質問)に遭遇しました。次に、そのデータベースを削除し、作成スクリプトを最初からテストしたいと考えました。SSMSをログオフして再びログインしようとしましたが、拒否されました。デフォルトのデータベースにログインできないため、エラーが発生しました。ああ!

私がしたことは、SSMSのログインダイアログで、[オプション]、[接続プロパティ]の順に進み、[ masterデータベースに接続]コンボボックスに入力しました。接続をクリックします。入りました。そこから、次のコマンドを実行できます。

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

-1

Windows認証を使用していて、ユーザー名とパスワードを使用してユーザーとしてログインするためのパスワードがわからない場合は、これを行うことができます。SSMSのログイン画面で、右下のオプションをクリックし、接続プロパティタブに移動します。 。次に、アクセスできる別のデータベースの名前を手動で入力できます。ここにと書かれている場所に接続すると、接続できます。次に、デフォルトのデータベースを変更するための他のアドバイスに従います

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.