web-dev-qa-db-ja.com

オブジェクト「XXX」が存在しないか、権限がないため、見つかりません

ストアドプロシージャを呼び出すと、次のエラーが発生します。

オブジェクト「XXX」が存在しないか、権限がないため、見つかりません。

データベースを確認しましたが、SPには適切な権限があり、それでもエラーが発生します。

助言がありますか?

13
Twiggz

わかりました、これが起こったことです。 SPの終わりの前に特殊文字があったので、それは不完全でしたが、どういうわけかまだ有効です。

SPを確認して、その権限を確認できましたが、実行できませんでした。そのため、問題を解決するには、SQL Management Studioからテキストをコピーしてメモ帳に貼り付け、次に、特殊文字を削除してから、コピーしてSQL Management Studioに貼り付け、変更スクリプトを実行します。

キャラクターがどうやってそこに着いたのか非常に奇妙です!

4
Twiggz

私は、ストアドプロシージャで「END」の後に「GO」という単語を残していたことを発見しました。 Procを変更してGOを追加し直すと、この問題が修正されました。

11
Shane

マークされた回答と同様:私のストアドプロシージャの最後の行は、適切なユーザーとして実行するためのストアドプロシージャへのアクセス許可を与えた行でした-おそらくスクリプトを生成したときにそこに追加されました。

それ(またはおそらく隠されたキャラクター)を削除すると、なんとか修正できます。

"XXX"は、私が正常に呼び出したストアドプロシージャの名前でした(目的の変更を行いました)が、このエラーが発生しました。

2
gaijintendo

私もこの問題を満たしています。私の場合、ストアドプロシージャを作成した直後に実行権限を付与しました。また、2つのステートメントの間に「GO」はありません。私はGOを追加し、それは動作します。

2
raz0r89

ストアドプロシージャを呼び出すときに使用しているアカウントは、チェックに使用しているアカウントと同じであってはなりません。 sprocの実行に使用しているアカウントがオブジェクトにアクセスできることを確認してください。

1
Andrew Hare

Microsoft SQLサーバーで、操作するオブジェクトエクスプローラーでオブジェクトを選択して右クリックし、[スクリプト[オブジェクト] as]を実行すると、このエラーが発生することなく、操作を正常に実行するために必要なスクリプトが得られます。

0
Chris Halcrow

「GO」を使用すると、問題も解決しました。これは私を夢中にさせていました、複数のドロップとユーザーとスキーマの権限をチェックした後、これは最終的に助けられたものです。

0
SRA

「GO」の問題を追加した後でも、問題は解決しませんでした。次に、UPDATE STATISTICS [Table_name]ステートメントを削除しました。その後、私の問題は修正されました。

0
dgcharitha

常にdbo.(または他のスキーマ)接頭辞は、オブジェクトの作成時とアクセス時の両方に使用します。

私はこの非常にこのトピックについて最近書きました:

0
Aaron Bertrand

schemeは異なる場合があります。別のschemeがある場合は、その前に追加します。

0
Erkan günerhan

スキーマ/セキュリティなどに関する他の回答と同様に:

  • どこかに拒否がありますか?
  • 大文字と小文字を区別するオブジェクト名と「間違った」名前の使用?
  • 間違ったデータベースコンテキスト?例:OtherDB.dbo.Myproc
0
gbn