我正在尝试使用asymmetric key通过add an assembly连接到SQL2008中的数据库。
我们使用十六进制字符串添加程序集(仅通过sql查询将程序集添加到服务器)
USE [master]
GO
IF NOT EXISTS (SELECT * from sys.asymmetric_keys where name = 'ManagedAsymmetricKey')
BEGIN
CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM FILE = 'C:\Managed.dll'
CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
GRANT UNSAFE ASSEMBLY TO CLRLogin
END
GO
USE [$dbName]
GO
CREATE ASSEMBLY [Managed]
AUTHORIZATION [dbo]
FROM 0x4D5A....
WITH PERMISSION_SET = UNSAFE
GO这将在本地实例上工作,但是通过我们接收的网络;The certificate, asymmetric key, or private key file does not exist or has invalid format.
我可能错误地认为我应该首先添加密钥,我是否应该添加程序集,然后按照CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY [workingDB].[dbo].[Managed]的思路进行一些操作?
发布于 2012-07-04 00:10:17
您可以使用以下步骤使其正常工作:
使用安全的程序集运行您的create assembly语句(即使程序集需要UNSAFE将非对称密钥从程序集删除
从0x4D5A创建程序集托管授权dbo ....WITH PERMISSION_SET = SAFE从程序集创建非对称密钥ManagedAsymmetricKey管理删除程序集管理从非对称密钥ManagedAsymmetricKey创建登录CLRLogin将不安全的程序集授予CLRLogin
发布于 2012-01-30 14:11:23
FROM FILE =总是从SQL Server的角度来看的。您需要将证书复制到数据库服务器上的本地驱动器。
https://stackoverflow.com/questions/9059912
复制相似问题