慎重な使用sp_renameをは、任意のオブジェクト名を変更します

オリジナルリンクします。http://www.lmwlove.com/ac/id820

私たちは、オブジェクト名のSQLServerデータベースを変更し、あなたはそれがオブジェクトのリストのための視覚的な外観と比較するので、動作するsp_renameをシステムストアドプロシージャを使用することを好むかもしれないが、はるかに高速スピード。それはいくつかの問題を引き起こす可能性がありますので、しかし、我々が提唱していない理由は、それを使用しています。オブジェクト名を変更するためにそれを使用する場合も、データベース自体は、次の警告を与える:
警告:オブジェクト名の一部を変更すると、スクリプトやストアドプロシージャを弱体化させることができます。

私たちは今、簡単なテストを行い、簡単なストアドプロシージャを作成します。

手続きusp_testを作成する
よう
始める
選択1つの
エンド


これは、この章の焦点ではないので、私たちは、このストアドプロシージャの機能と構文を勉強しません。

その後usp_testの名前を変更するsp_renameをを使用

sp_renameを 'usp_test'、 'usp_test_1'


警告を促した:
警告:オブジェクト名の一部を変更すると、スクリプトやストアドプロシージャを弱体化させる可能性がしかし、変更されている名前は失われます。

この時、私たちはアップ「usp_test_1」に変更されている「usp_test」ストアドプロシージャEnterprise Managerのストアドプロシージャ名のリストからご覧ください。また、我々は右で選択した- >は、次のようにスクリプトが定義され、「usp_test_1」として保存されている参照するには、名前を変更します
。ALTER手順[DBO] [usp_test_1]
AS
始める
SELECT 1つの
エンドを
私たちはsp_helptextを、システムのストレージを使用します定義を確認する手順は、名前が来るように変更していない、この方法で見つかった定義があります

sp_helptextをusp_test_1


次のような結果を返します:
usp_testプロシージャの作成  
AS  
始める  
。SELECT 1つの  
エンド
列定義テーブルに定義されているが、何の変更が来ないsys.sql_modules

OBJECT_ID = OBJECT_ID( 'usp_test_1')sys.sql_modulesから定義を選択


次の結果が返されました:
エンドは、AS SELECT 1を開始usp_testプロシージャの作成

このテストから見ることができ、私は、データベース内のオブジェクトの名前を変更した、データベースオブジェクトの定義で行うことができるが同期されません。これにはいくつかの問題を引き起こす可能性があり、そのような次のリンクなどの問題が生じ、この理由のために、つまり、原因。

訂正:
再び見つかったテストの後、だけではなく、オブジェクト名を変更するsp_nameの使用は問題を引き起こす可能性があり、どのような方法でオブジェクト名を変更し、問題があるでしょう。我々は慎重にオブジェクトの名前を変更する場合には、そうです。

おすすめ

転載: www.cnblogs.com/donelyorjune/p/11105078.html