2011-07-05 4 views
0

Calcというメインストアドプロシージャによってクエリされるストアドプロシージャ(ワーカープロシージャ)がいくつかあります。 Calcは、テーブルのSと呼ばれる同義語を作成します。この名前はパラメータによって渡されます。SQL Server:ストアドプロシージャによって作成されたユーザーあたりの同義語に関する問題

作業者procsは、同義語表を使用して作業します。

管理者ログイン用に動作します。

問題:ユーザーが実行した場合Calc同義語はDomain/Username.Sになり、管理者は、それがdbo.Sと呼ばれるシノニムを作成し、労働者が唯一Sにアクセスして作業する場合Sにアクセスする労働者がDomain/username.S

を見つけることができません。 。

Calcという名前のユーザーが作成した同義語に、どのようにして作業者がアクセスできますか? XユーザーがCalcに電話し、別のテーブルSで操作できますが、同じワーカーprocsを使用できます。

ありがとうございました、うまくいけば誰かが私を助けることができます。

環境:SQL Server 2008の 許可されたユーザー権利:CALCを作成するときにシノニム

+0

私は美しくない問題を解決しました。 同義語テーブルが削除され、Calcが作業者Procsに渡されるパラメータとしてtablenameを取得するようになりました。これで、渡された表を処理するために動的SQLが使用されます。 今は同義語としては良いが、それは動作します。 – Lakedaimon

答えて

1

はSを作成し、CALCを実行し、スキーマの接頭辞を使用して作成し、Sを呼び出すか、すべてのユーザーがアクセス権を持っていることを確認してください同じデフォルトスキーマ。しかし、私は前者を好む。

+0

スキーマの接頭辞は、calcの実行ユーザーによって異なります。だから、どのようにして作業者がこの接頭辞を知って接頭辞Sを呼び出せるか – Lakedaimon

+0

dbo.Calcを作成すると、ユーザーはdbo.Calcを呼び出します。異なるスキーマを持つCalcのコピーが複数あると言っていますか? –

+0

Calcの1つのコピーがSの異なるコピーを作成します。 User1:exec Calc - > user1.Sが作成されています。 User2:exec Calc - > user2.Sが作成されています。 – Lakedaimon

関連する問題