DB1とDB2の2つのデータベースがあるとします。 DB1にはStudentという名前のテーブルがあり、DB2にはSP1という名前のストアドプロシージャがあります。 SP1では、以下のクエリを使用してスチューデントテーブルのデータを選択しています。DB1の要求をDB2にリダイレクトする方法
*をDB1.dbo.Studentから選択します。
上記のクロスデータベース通信を持つストアドプロシージャは300以上あります。今、データベースとデータベースのスキーマの観点から、DB1と同じDB3からDB3に変更したいと考えています。 このために、完全修飾データベース名を持つ300のストアドプロシージャもすべて変更する必要があります。さて、クエリは、おそらく次のようになります:DB3.dbo.Student
から選択*
私も自分を変えたくない、今DB3を指すように、すべてのストアドプロシージャを変更したくありませんストアドプロシージャで動的SQLに書き込まれたクエリ(動的SQLを作成することでこれを行うことができます)。
DB1.dbo.Studentを実行すると、DB3.dbo.Studentにリダイレクトされます。中間層または任意のSQL設定。
私にとって非常に大きな助けになるでしょう。前もって感謝します !!
あなたの答えはありがとうございます。私はハードコードをもう一度やりたくありません。ストアドプロシージャを変更せずにDB3を呼び出す方法が必要です。 – MehraG
悲しいことに、DBをパラメータとして渡すことを知っている唯一の方法は、すべてのプロシージャを動的SQLとして書き直すことです。これははるかに悪いメンテナンスの悪夢です。私はまだ同義語の使用をお勧めします。動的ではありませんが、残りのストアド・プロシージャやビューに影響を与えずにシノニムを更新できます。シノニムを自動的に削除して再作成できるコードを作成する方がずっと簡単です。私は元の答えに例を追加しました。 –