2017-05-23 8 views
0

しばらく前に手順ALF_GetPopulationForPolygon_2_oldが作成されました。 SSMSでは(right mouse button -> rename)という名前がプロシージャALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504にリネームされました。名前の変更は通常、渡されたが、結果として、クエリ:sp_helptextのプロシージャの古い名前

SELECT 
    sm.definition 
FROM 
    sys.objects AS o 
     INNER JOIN sys.sql_modules AS sm 
     ON (1 = 1) 
      AND (sm.object_id = o.object_id) 
WHERE 
    (1 = 1) 
    AND (o.name like 'ALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504') 

およびストアドプロシージャを呼び出す:

EXEC sp_helpText 'ALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504' 

戻り、次のテキスト:

... 
CREATE PROCEDURE [dbo]. [ALF_GetPopulationForPolygon_2] 
... 

は、これらは(OLDを見ます! )プロシージャの名前。これが原因で何が起こったのか、またこれをどのように修正することができますか?

答えて

1

少なくとも2つの理由でオブジェクトの名前を変更しないでください。

GUIの代わりにT_SQLコマンドを使用する場合(Management Studioで「クリック」するだけで、T-SQLコーデックが生成されます)、BOLの記事でも同様の警告が表示されます:オブジェクト名の一部を変更 sp_rename (Transact-SQL)

注意スクリプトおよびストアド 手順を破ることができます。 ストアドプロシージャ、トリガ、ユーザー定義関数、またはビューの名前を変更するためにこのステートメントを使用しないことをお勧めします。 の代わりにオブジェクトを削除し、新しい名前でオブジェクトを再作成します。

名前を変更した最初の理由は、

sys.sql_modulesカタログビューの定義 列に対応するオブジェクト名の名前を変更しないストアドプロシージャ、関数、ビュー、またはトリガの名前を変更: スクロール物品は、解説セクションを見つけます。したがって、これらのオブジェクト型の名前を変更するためにsp_renameを使用しないように、 をお勧めします。その代わりに、 をドロップし、その新しい名前でオブジェクトを再作成します。

これは2番目です。

あなたの手順の名前を変更したいときに、あなたは新しい名前であなたのPROCを再作成して、あなたは古いもの

をドロップすることができそう、プロシージャ名をCREATEし、変更するようスクリプトあなたの手順をすべき
関連する問題