各ユーザーが FindResults というスキーマにテーブルを持っているデータベースで作業しています
例: MyDatabase.User1.FindResults、MyDatabase.User2.FindResults など。
ユーザーの 1 人としてログインしているときに、このテーブルで SELECT クエリを実行すると、問題なく動作します。ただし、このテーブルで SELECT クエリを実行しようとするストアド プロシージャ (MyDatabase.dbo.ReadFindResults) がありますが、MyDatabase.dbo.FindResults (存在しない) を読み取ろうとするため失敗します。動的 SQL を使用してこれを回避しましたが、これを回避する方法があることを望んでいました。
現在のユーザーのスキーマを使用するようにストアド プロシージャに指示する方法、またはスコープを変更して必要なテーブルを見つけられるようにする方法はありますか?
編集:ストアドプロシージャのコードは次のとおりです
-- Returns the IDs contained in the given find results set
CREATE PROCEDURE [dbo].[ReadFindResults]
@resultsid int -- The ID of the results set
AS
BEGIN
SELECT objectid FROM FindResults WHERE resultsid = @resultsid
END
GO