上記のストアド プロシージャの実行権限が付与されている制限付きログインからストアド プロシージャを実行しようとしています。ストアド プロシージャは、同じサーバー上に存在する 2 つのデータベースにアクセスします。ストアド プロシージャを実行すると、次のようなエラーが表示されます。
サーバー プリンシパル "LimitedUser" は、現在のセキュリティ コンテキストではデータベース "Database2" にアクセスできません。
背景: 私は最近、2 つの異なるデータベース サーバーを 1 つのデータベースに移行するという目標を課されました。必要なデータベースをバックアップしてエクスポートし、それらを新しいサーバーに復元しました。古いデータベースは、MS sql server 2000 (データベース 2 用) および MS sql server 2005 (データベース 1 用 - 前述のストアド プロシージャがある場所) です。
データベースをインポートしたため、所有者が異なり、それが問題を引き起こす可能性があることを示唆しているように見えるいくつかのリードを見つけました。そこで、2 つのデータベースで「exec sp_changedbowner 'sa'」を実行して、所有者が同じであることを確認しました。LimitedUser からストアド プロシージャを実行すると、同じエラーが発生します。さまざまなフォーラム サイトの他の多くの例では、異なるサーバー上にあるデータベースを扱っており、オープン クエリ コマンドを使用する必要があります。これが必要だとは思いません。
より多くの管理者権限を持つユーザーとして実行すると、ストアド プロシージャは問題なく実行されます。私の質問は、LimitedUser からのこのアクションを許可するには、どの権限を設定する必要があるかということです。
ありがとう!