ADD SIGNATURE (Transact-SQL)

更新日期: 2006 年 7 月 17 日

将数字签名添加到存储过程、函数、程序集或触发器。

主题链接图标Transact-SQL 语法约定

语法

 ADD [ COUNTER ] SIGNATURE TO module_class::module_name      BY <crypto_list> [ ,...n ]  <crypto_list> ::=     CERTIFICATE cert_name     | CERTIFICATE cert_name [ WITH PASSWORD = 'password' ]     | CERTIFICATE cert_name WITH SIGNATURE = signed_blob      | ASYMMETRIC KEY Asym_Key_Name     | ASYMMETRIC KEY Asym_Key_Name [ WITH PASSWORD = 'password']     | ASYMMETRIC KEY Asym_Key_Name WITH SIGNATURE = signed_blob

参数

  • module_class
    向其中添加签名的模块的类。架构范围内的模块的默认类为 OBJECT。
  • module_name
    要签名或副署的存储过程、函数、程序集或触发器的名称。
  • CERTIFICATE cert_name
    对存储过程、函数、程序集或触发器进行签名或副署时所用证书的名称。
  • WITH PASSWORD ='password'
    是对证书私钥或非对称密钥进行解密时所需的密码。仅当数据库主密钥不保护私钥时才需要该子句。
  • SIGNATURE = signed_blob
    指定模块的已签名二进制大型对象 (BLOB)。如果不提供私钥,而只提供模块时,则该子句非常有用。当使用该子句时,只需要模块、签名和公钥便可将已签名的二进制大型对象添加到数据库。signed_blob 是以十六进制格式表示的 Blob 自身。
  • ASYMMETRIC KEY Asym_Key_Name
    对存储过程、函数、程序集或触发器进行签名或副署时所用非对称密钥的名称。

备注

要签名或副署的模块以及用来对模块进行签名的证书或非对称密钥必须已经存在。模块中的每个字符都包括在签名计算中。这包括前导回车符和换行符。

可以使用任意数量的证书和非对称密钥对模块进行签名和副署。

当更改模块时,便会删除模块的签名。

如果模块包含 EXECUTE AS 子句,则也会将主体的安全 ID (SID) 作为签名过程的一部分包括在内。

ms181700.Caution(zh-cn,SQL.90).gif注意:
模块签名应仅用于授予权限,从不用于拒绝或撤消权限。

可以在 sys.crypt_properties 目录视图中看到有关签名的信息。

权限

要求对对象拥有 ALTER 权限,以及对证书或非对称密钥拥有 CONTROL 权限。如果关联的私钥受密码保护,则用户还必须具有相应的密码。

示例

以下示例使用证书 HumanResourcesDP 对存储过程 HumanResources.uspUpdateEmployeeLogin 进行签名。

USE AdventureWorks;
ADD SIGNATURE TO HumanResources.uspUpdateEmployeeLogin 
    BY CERTIFICATE HumanResourcesDP;
GO

请参阅

参考

sys.crypt_properties (Transact-SQL)
DROP SIGNATURE (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

更改的内容:
  • 更正了权限要求,将程序集添加到了可签名实体列表中,并更正了语法。