3

したがって、2 つの異なるデータベースがあり、ストアド プロシージャが他のデータベースを参照して情報を取得する必要があるという状況があります。通常、クエリは次のように記述します。

select * from Mercury.dbo.MyTable a join Purchasing.dbo.OtherTable b on a.a = b.a

これは本番環境と開発環境では問題なく機能しますが、最近では開発を Dev/QA/ST に分割し、環境に合わせて異なるバージョンのデータベースを使用しています。

Example
Purchasing, PurchasingQA, PurchasingST
Mercury, MercuryQA, MercuryST

そのため、QA のストアド プロシージャが開発用のデータベースを参照するため、コードをプロモートするときに問題が発生しています。

私の質問は、環境変数に基づいてアクセスされているデータベースを変更するにはどうすればよいですか? 私はこれに DynSQL を使い始めましたが、これにより、コードの保守がさらに困難になります。

おそらく、データベース全体の「DB エイリアス」を作成する方法はありますか?

4

1 に答える 1

4

その目的で同義語を使用することを検討できます。あなたの場合、他のデータベーステーブルを参照するシノニムを作成するだけです。次に例を示します。

Mercury.dbo.MyTableの類義語MyTableを作成します

各データベースには独自の同義語がありますが、残りのスクリプトとストアドプロシージャは同じです。

于 2012-11-05T08:55:04.647 に答える