私はSQL Server 2005を使用しています 私はユーザーがいます。私たちは彼をUser1と呼ぶでしょう。下のサーバープリンシパル「SA」はデータベースにアクセスすることはできません、SQL権限Conundrum
DB1..Table1 (can read, just fine)
DB1..Proc1 (reads Table1. works fine)
DB2..Table2 (can read, works)
DB2..Proc2 (reads Table2, works)
DB1..Proc3 (reads Table1 with a join on DB2..Table2...
をメッセージ916、レベル14、状態1「DB2」:ここでは
DB1 (read,write,execute)
DB2 (read,execute)
は何が起こるかです:彼はそうのようなアクセス権を持っています現在のセキュリティコンテキスト)
BUT!
同じSELECT ... JOINは、ストアドプロシージャの一部ではない場合にはきわめて有効です。
これは深刻な頭を傷つける者であり、私の仕事を支えています。何か案は?
これらは両方とも同じサーバー上にあり、ユーザーのデフォルトのスキーマでもあるデフォルトのDBOスキーマを使用しています。 – Patrick
"sa"への参照は困惑しています。 DB1..Proc3は 'sa'というEXECUTEで作成されましたか? –
いいえ、私はちょっと変わったことに気づいただけです。 "sa"は、すべてのデータベース上のユーザー "dbo"にリンクされています。ただし、DB2にはログイン名が空白です。おそらくそれが再付着することができればうまくいくでしょうか? – Patrick