web-dev-qa-db-ja.com

データベース固有のオブジェクトを選択すると、SQL Server ManagementStudioの接続はデフォルトで「マスター」になります

SQL Server 2008 R2 Management Studioで、特定のデータベース内のオブジェクトを右クリックして[上位1000行を選択..]を選択すると、テーブル名が完全な間、クエリウィンドウのデータベース接続は常に「マスター」で開きます。 [データベース]。[dbo]。[テーブル]として修飾されます。これにより、追加するすべてのものを完全に修飾したり、USEステートメントを追加したり、ドロップダウンメニューからデータベースを選択したりせずに、このクエリにジャンプして微調整し、結合などをステートメントに挿入することができなくなります。

'master'に接続するのではなく、選択したオブジェクトブラウザのデータベースのデータベース接続でクエリウィンドウを開き、クエリテキストでオブジェクトのデータベースを完全に修飾しない設定などはありますか? SQL接続をデフォルトでデータベースに登録できることはわかっていますが、実際には毎週複数の新しいデータベースを調べています。特定の月に数十のデータベースにアクセスするため、複数のデータベース登録を管理するのは困難です。 。 SSMSが指定されたデータベースに接続したばかりの場合はむしろそれを望みます。可能で簡単ですか?

23
Jon Davis

SELECT TOPコマンドにはそのような設定はありませんが、ログインのデフォルトデータベースを変更することでこれを行うことができる場合があります。これをさまざまなデータベースで頻繁に行う場合、これは面倒です(すでに概説したように、登録を変更するのと同じです)。

SELECT TOP 1000を使用する代わりに(適切なデータベースコンテキストに配置しないことに加えて、削除するだけであると想定してTOPも配置します)、正しくする必要があります-表をクリックして、Script Table as> SELECT to> New Query Windowを選択します。これにより、コンテキストが適切なDBに配置され、USEコマンドが追加され、TOPがなく、テーブル名のデータベースプレフィックスがなくなります。

[〜#〜]編集[〜#〜]

FWIW、私はあなたに同意する傾向があります、そして私は類似/同一であるべき機能間の一貫性のない振る舞いを嫌います。だから、私はこの提案を提出しました-投票してください!

http://connect.Microsoft.com/SQLServer/feedback/details/684247/

11
Aaron Bertrand

Win Auth経由でアクセスする場合、グループ内にいる場合、SAまたはその他のユーザーIDを使用している場合、またはログインを変更することが実際には解決策ではない状況にある場合、そしてすべての場合実行したいのは、デフォルトでクエリエディタのデータベースです。

  • 既存の開いているクエリエディタで、右クリックして[接続]、[接続の変更]の順に選択します。

  • [オプション]ボタンをクリックして、オプションを展開します。

  • [接続のプロパティ]タブで、接続するデータベースを選択します。

SSMSは、そのサーバーの選択を記憶します。他のサーバーについても繰り返す必要があるかもしれませんが、マスター以外のデフォルトのデータベースを使用することで解決できます。

16
TulsaDavid

クエリウィンドウをデフォルトでデータベースに接続する場合は、SSMSで[セキュリティ]-> [ログイン]に移動し、このサーバーへの接続に使用するログインを選択して、プロパティウィンドウを確認します。ページ「general」で、デフォルトのデータベースを「master」から接続するデータベースに変更します。

6
Alex_L

クエリを実行する前に、クエリウィンドウの上部にUSE [database name]を配置するだけで済みます。これを行う場合、データベース名を完全修飾する必要はありません。スクリプトを生成してバージョン管理する場合は、とにかくこれを一番上に置くことをお勧めします。少なくとも、間違ったデータベースに対してスクリプトが誤って実行されるのを防ぎます(たとえば、ストアドプロシージャの作成)。

USE MySpecialDatabase
GO

SELECT * FROM MySpecialTable
2
Sumo