0

ストアド プロシージャ (SP) でシノニムを使用して、リンクされたデータベースで選択を実行しています。データベース名は、SP の入力に基づいて計算されます。SP はほとんどの場合正常に動作しますが、同じ SP がプログラムを介して複数回呼び出されると、次のようなエラーが発生します -

無効なオブジェクト名 Synonym_Name

アプリケーションを再起動するとエラーが修正されましたが、これはサービス呼び出しによってトリガーされたため、受け入れられません。

SPの開始時に、オブジェクトが存在するかどうかを確認し、存在する場合はドロップしてから作成しました-

IF EXISTS(select * from sys.synonyms s where name = 'Synonym_Name' )
BEGIN
    DROP SYNONYM [dbo].[Synonym_Name]
END

EXEC ('CREATE SYNONYM [dbo].[Synonym_Name]  FOR ' +  @DB  + '.[dbo].[TableName]')

この無効なオブジェクト名エラーを回避するにはどうすればよいですか?

私がすべてのフォーラムで読んだことによると、特定の ID はなく、シノニムは誰でも削除できます。テーブル名が後で複数の場所で参照されるため、状況を処理する他の方法はありますか - テーブルからの選択からの挿入、変数の割り当てなど。

この質問が既にカバーされているかどうかはわかりません。検索しましたが、何も見つかりませんでした。

4

0 に答える 0