0

SQL Server 2008 データベースのモジュールに署名しました。誰かが署名されたモジュール (proc またはトリガー) を変更した場合に備えて、情報メッセージを出力したいのですが、そのためにはプロシージャに再署名し、TSQL コードを出力する必要があります (適切な権利があります)。

それを行うための最良の方法は何ですか?

DDLトリガーは、トリガーモジュール内で既に変更されており、以前に署名されたかどうかを確認できないと思われるため、このニーズには適していないようです。

4

2 に答える 2

1

署名の全体的な考え方は、承認された誰かがモジュールをレビューし(コードを検査し)、その権限を使用してモジュールに署名したということです。モジュールを変更するには、同じ権限のある個人がモジュールを再度確認し、適合性を確認して再署名する必要があります。このプロセスを自動化すると、コード署名の目的がほとんど損なわれます。全員をsysadminにして、1日で呼び出すだけです。

于 2012-06-28T10:46:23.823 に答える
1

これは古い質問ですが、署名付き SP を使用する理由は他にもあります。「SP が署名されているかどうかを判断する方法」という質問に対する回答は次のとおりです。

IF EXISTS (
    SELECT * FROM sys.crypt_properties 
    WHERE (crypt_type = 'SPVC') AND 
       (major_id = OBJECT_ID(N'[dbo_or_schema].[WhateverYourSPIsCalled]'))) 
    -- <stuff to do when SP is signed>
ELSE -- <stuff to do when SP is not signed>

Remusのおかげでこれを解決しました(他の回答のコメントを参照)。

于 2016-11-12T00:51:59.020 に答える