2017-02-15 5 views
0

SQL Server ExpressデータベースにtestSPというストアドプロシージャがあります。SQL Serverでストアドプロシージャを実行

私は

exec [db_owner].[testSP] 

を使用して、それを実行することができていますが、私はexec testSPを使用している場合、それは動作しません。

この原因は何ですか?

この動作をしない他のデータベースがあります。

ありがとうございました。

+0

ユーザーのデフォルトスキーマが異なる可能性があります。 'SELECT SCHEMA_NAME()'を実行するとどうなるでしょうか? PS。あなたが実際のエラーを投稿するなら、それは本当に役立ちます。私たちの推測を止める。そのコマンドの –

+0

はdboを返します – Zee

+0

はい。 'db_owner'は' dbo'とは異なります。実際のエラーメッセージは何ですか?あなたのユーザはデフォルトスキーマとしてdboを使用するように設定されていますので、db_ownerスキーマで何かを実行するには、 –

答えて

1

ユーザーはdboをデフォルトスキーマとして設定しています。存在しない

exec [dbo].[testSP] 

:それはあなたが

exec testSP 

を実行したときに

それはdboあるデフォルトのスキーマを使用していますので、これを実行しているかなり普通のことです。

あなたは

exec [db_owner].[testSP] 

を実行すると、それは見つけると、ストアドプロシージャ

は、私は背景を知らないが、私は、誰かが間違っ/誤って作成され、db_owner

と呼ばれるスキーマを使用していると思うことを実行します

すべてのdbは動作していますが、私はオブジェクトがdboスキーマにあると推測します。あるいは、ユーザーは正しいスキーマを使用するように設定されています。あなたがこれを実行するdb_ownerのようにユーザーのデフォルトのスキーマを変更したい場合は

ALTER SCHEMA dbo TRANSFER [db_owner].[testSP]; 

::オブジェクトブラウザで見て、あなたがこれを実行するdboスキーマにストアドプロシージャを移動したい場合は

を比較行く

ALTER USER [youruser] WITH DEFAULT_SCHEMA = db_owner; 

私はdb_ownerスキーマは事故だと思っています。

+0

はい、このストアドプロシージャのカスタムスキーマを作成した '[db_owner]。[testSP]'でプロシージャを作成しました。私は1時間前にそれを修正しました。あなたの入力ニックネーに感謝します。 – Zee

+0

固定された音が聞こえます。私の答えが役に立ったら、それにチェックを入れてください。 –

関連する問題