同じストアド プロシージャ ロジックを共有する必要がある 2 つの異なる SQL Server データベース (同じサーバー上 - 役立つ場合) があります。私が達成しようとしている解決策は次のようになります。
Database1
Table: TestTable
Synonym: sp_MyProc pointing at SharedDatabase.dbo.sp_MyProc
Database2
Table: TestTable
Synonym: sp_MyProc pointing at SharedDatabase.dbo.sp_MyProc
SharedDatabase
Proc: sp_MyProc which runs queries against TestTable
シノニムを使用して、Database1 のコンテキストで sp_MyProc を実行すると、Database2.TestTable が使用されるようにしたいと考えていました。また、Database2 のコンテキストで sp_MyProc を実行すると、Database2.TestTable に反します。ただし、シノニムのいずれかを使用して sp_MyProc を実行すると、シノニムのコンテキストが無視され、見つからない TestTable のローカル コピーを探して実行されます。
シノニムまたはその他のメカニズムを使用して、異なるデータベース内のテーブルの異なるコピーに対して実行する共有ストアド プロシージャを実装する方法はありますか?
編集
私の場合、既存のテーブルとプロシージャの大規模なセットでこれを実行しようとしているため、プロシージャまたはテーブル自体を変更する必要があるソリューションは理想的ではありません。