0

我在 SQL Server 2008 数据库中签署了模块。如果有人更改签名的模块(proc 或触发器),我想打印信息消息,必须重新签名过程并打印 TSQL 代码才能做到这一点(有适当的权利)。

如何以及最好的方法是什么?

DDL 触发器似乎不适合这种需要,因为内部触发器模块已经更改,并且我认为我无法确定它之前是否已签名。

4

2 回答 2

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 回答