sql >> データベース >  >> RDS >> Sqlserver

SQL Server:関数/プロシージャ シグネチャを変更するときに参照を確認する

    システム テーブルにトリガーを追加することはできませんが、ALTER PROC ステートメントで起動する DDL トリガーを作成することはできます - 例:

    ALTER TRIGGER DDL_PROCON DATABASEFOR ALTER_PROCEDUREASDECLARE @data XML, @ObjectName sysname, @ParamCount intSET @data =EVENTDATA()SET @ObjectName [email protected]('(/EVENT_INSTANCE/ObjectName)[1]', ' sysname')PRINT 'プロシージャが変更されました:' + @ObjectNameSELECT @ParamCount =COUNT(*) FROM sys.parametersWHERE object_id =OBJECT_ID(@ObjectName)RAISERROR('このプロシージャには %i パラメータが追加されました',0,0 ,@ParamCount)GO  

    以前のパラメータ リストを取得する方法がわかりません。それが可能かどうかもわかりません - 知っている人はいますか?

    可能であれば、新しいパラメーターをオプションにするというチャールズの提案に同意します。既存のコードは壊れず、しなければならない場合にのみ参照を見つける必要があります。 パラメータを呼び出しに追加してください。

    データベースをスクリプト化することは、長い道のりのように思えます。次のような単純なクエリで、(データベース内の) proc へのすべての参照を見つける必要があります:

    SELECT so.name, so.type_descFROM sys.all_objects so JOIN sys.all_sql_modules sm ON so.[object_id] =sm.[object_id]WHERE sm.[definition] LIKE '%%'   

    これは同じことですが、以前のバージョンの SQL サーバーでも動作します:

    SELECT so.name, so.typeFROM syscomments sc JOIN sysobjects so ON sc.id =so.idwhere text like '%%'  

    これがお役に立てば幸いです。

    MDD



    1. jQueryを介してAJAXを使用してMySQLの結果を投稿する

    2. シェルスクリプトを介してechoコマンドでmysql_secure_installationを自動化します

    3. DundasBIでのQuickBooksデータの分析

    4. awsrdsプロキシがnodejs12.xからタイムアウトエラーをスローします