2016-05-12 7 views
1

私は非常に、非常に奇妙な見つける何かに遭遇しました。私はobject_definition(object_id('StoredProcedureName'))のようなものを使ってストアドプロシージャの定義を取得しています。私は新しいクエリを実行しようとしたときしかし、私は、ストアドプロシージャを変更するobject_definitionを使用していたので、私達のデータベースの一部に、出力は、これが問題でしたSQLオブジェクト定義は、存在しない別のオブジェクトの定義を返しますか?

Create Procedure dbo.SomeOtherStoredProcedure

だったことに気づいて、それストアドプロシージャ 'SomeOtherStoredProcedure'が存在しないと言います。

私はobject_idが使用しているとき、私は、オブジェクトの種類を指定していないよ知っているが、(私が間違っているなら、私を修正)返された定義はまた、ストアドプロシージャであるため、私はここでの問題はないと思います。

私は知らないobject_definitionまたはobject_idにはいくつかの癖はありますか?何が原因でしょうか?

(SQL Azureでは、SSMS 2012)

+0

ストアドプロシージャの名前が変更されたときにこの現象が発生することができますように見えます。そのような場合、「真の」定義を得る方法について私は確信していません。 – AaronHolland

答えて

0

アーロンが述べたように、原因はsp_renameをです。 MSDN saysとして:ストアドプロシージャ、ファンクション、ビュー、またはトリガの名前を変更する

は、あなたが得ることができるsys.sql_modulesカタログビュー

の定義列に対応するオブジェクト名の名前を変更しませんsys.objectsから更新されたオブジェクト名。また、文字列を操作することで、「真の」定義を見つけることができます。古いオブジェクト名が壊れた定義のどこにあるのかを見つけて、新しいオブジェクト名に置き換えます。それが十分にはっきりしていることを望みます。

関連する問題