2011-01-10 12 views
1

既存のストアドプロシージャから新しいストアドプロシージャを作成しました。私がしたのは古いものをコピーして名前を変更したことだけでした。レプリケートされたSQL Serverストアドプロシージャは異なる結果を返します

質問アナライザで両方を実行すると、元のデータが取得されますが、新しいデータは返されません。

権限を持つことができますが、両方とも公開に設定されています。何かご意見は?

+1

ストアドプロシージャ内でスクリプトを直接実行するとデータが取得されますか? –

+1

新しいprocのオーナーは何ですか?そして、新しいprocは元のスキーマと同じスキーマにありますか?そしてそれぞれのクエリ実行計画を見てきましたか? – pelazem

答えて

0

spを作成し、spを再複製しました。 procの所有者または権限に関連している可能性があります。私はそれが働いた後、もうデバッグのように感じることはありません。

1

ansi-nullsの値を確認しますか?彼らは頭が痛むことがあります。コードを見ることなく、一般的なデバッグルールとして伝えるのは難しい。その基本クエリーに分解し、問題がどこに導入されたのか、または元のストアドプロシージャの結果と異なる点を確認してください。

1

申し訳ありません私の質問が純粋ではないように見えますが、実際にそのコピーをどうやって作ったのですか?

これまでのところDBで作業するためにSSMSを使用していましたが、他の対話型ツールがあればそれを忘れています。 SSMSに関しては、このシナリオでは単にsp_helptext [proc name]というレプリケートが行われ、新しいクエリーウィンドウに出力がコピーされ、名前が変更されます(つまり、「スクリプトの実行」)。権限は元のprocのプロパティで確認され、通常は同じスクリプトまたは新しいスクリプトを使用して追加されます。

私はここにそれを置くために少し罪悪感を感じることはとても些細なようです。とにかく、その方法は今まで私を失敗させたことはありません。あなたは何ですか?

ご迷惑をおかけして申し訳ありませんが、これはもちろん、既にコピーされたSPに関するあなたの特定の問題にはお応えできません。私はちょうどあなたが複製のより基本的な問題にいくつかの助けを望んでいたかもしれないと思った。

+0

私はその特定のストアドプロシージャのスクリプトを生成し、procの名前を編集した後にそれを実行しました。あなたが説明したものとまったく同じです。これは権限の問題であった可能性がありますが、それらも複製しています。残念ながら(または幸いにも)私はprocを2回再現したが、うまくいきました。 – schar

関連する問題