微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将证书和签名程序集部署到其他数据库?

如何解决如何将证书和签名程序集部署到其他数据库?

我已经创建了一个证书,签署了我的程序集 (UNSAFE) 并且它可以工作,一切都如那里所述

https://nielsberglund.com/2017/07/01/sqlclr-and-certificates/

现在我需要将解决方案部署到许多客户数据库。我不想更改 TRUSTWORTHY 设置。 是否可以在不使用文件系统的情况下部署它? IE。现在我正在使用二进制文件来创建程序集。 但是我如何创建签名的程序集并将其部署到其他数据库

解决方法

是的,您可以直接从 T-SQL 脚本创建所有内容,而无需引用文件系统。可以从十六进制字节(即 VARBINARY 文字)创建证书,并且您可以使用我编写的一个小型命令行实用程序从二进制文件中获取十六进制字节的字符串形式,BinaryFormatter (开源;在 GitHub 上)。 BinaryFormatter 还可用于将编译后的 DLL 转换为十六进制字节以与 CREATE ASSEMBLY 语句一起使用。

另外,我应该指出,如果您使用的是证书,那么您不需要还需要启用 TRUSTWORTHY。这是使用证书的原因之一。只需确保将证书加载到 [master],从证书创建关联的登录,并授予该登录 UNSAFE ASSEMBLY 权限,所有之前尝试将程序集加载到任何数据库。但是,一旦加载了证书,您就可以将程序集加载到任何数据库中,而无需进行更多配置(尤其是不需要在任何地方启用 TRUSTWORTHY)。

此外,如果您希望在仍然使用证书的同时简化/自动化构建过程,请参阅我的以下两篇文章:

其他细节可以在我对以下 S.O. 的回答中找到。问题:

CLR Strict Security on SQL Server 2017

附言如果 CREATE ASYMMETRIC KEY 命令被增强以允许从二进制字符串创建,这个过程会简单一千倍。我已经在 Microsoft Connect 上提出了这个建议 – Allow Asymmetric Key to be created from binary hex bytes string just like CREATE CERTIFICATE – 所以请支持它:-).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。