web-dev-qa-db-ja.com

SQL Server:データベースが同じサーバー上にある場合の4つの部分識別子の使用

クライアントの設定では、低環境のデータベースサーバーはすべてコスト削減のために1つのサーバー上にありますが、高環境では、これらのデータベースは別のサーバーに展開され、サーバー間でクエリが実行されるときにリンクサーバーが使用されます。

設定例:

Dev:
  Server1: DB1, DB2
UAT: 
  Server1: DB1 (with linked server for DB2)
  Server2: DB2

4つの部分の[server].[database].[schema].[object]識別子とデータベース参照変数を使用して関係をモデル化し、SQL Server Data Toolsプロジェクトの単一セットでデータベースを維持しようとしています。これは、データベースが同じサーバー上にない場合はうまく機能しますが、データベースが同じサーバー上にある場合は失敗します。

私の質問:

  1. サーバー定義を省略する以外に、4つの部分の識別子でローカルサーバーを参照するデフォルトの方法はありますか?
  2. そうでない場合、ローカルサーバーを指すリンクサーバーを追加する方法はありますか?
  3. 上記のいずれも可能でない場合、SQL Serverでこれを管理する別の方法はありますか?
6
Ryan Gross

synonym を使用します。同義語は同期しないでください。ローカルサーバー上にある場合:

CREATE SYNONYM dbo.FooBar FOR DBName.dbo.TableName;

リモートの場合:

CREATE SYNONYM dbo.FooBar FOR ServerName.DBName.dbo.TableName;

これで、コードはどこにあってもdbo.FooBarを参照するだけで済みます。

11
Aaron Bertrand