【问题标题】:Create an Asymmetric key in a Visual Studio 2012 Sql Server project在 Visual Studio 2012 Sql Server 项目中创建非对称密钥
【发布时间】:2015-04-11 18:27:35
【问题描述】:

我正在开发一个带有四个 CLR 存储过程的 Visual Studio 2012 SQL Server 项目。我将在 SQL Server 2012 服务器上使用它。

在那个项目之前我有另一个项目,只有 CLR 存储过程,我使用这个 sql 将它添加到我的数据库中:

 -- #####################################################################
 -- Add SQL CLR Procedures.
 -- #####################################################################

Use master
go

-- Configure CLR execution on SQL Server.
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

-- For stored procedure dll...
CREATE ASYMMETRIC KEY CodeServerAK FROM EXECUTABLE FILE = 'D:\MyPath\bin\Release\CodeServerDB.dll'
CREATE LOGIN SQLCLRCodeServerSP FROM ASYMMETRIC KEY CodeServerAK
GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRCodeServerSP 
go

USE MyDB
GO

-- Create users from assemblies' login name.
CREATE USER SQLCLRCodeServerSPUser FOR LOGIN SQLCLRCodeServerSP
GO

USE MyDB
GO

CREATE ASSEMBLY CodeServerDB FROM  'D:\MyPath\bin\Release\CodeServerDB.dll'
WITH PERMISSION_SET=EXTERNAL_ACCESS
GO

但现在我有一个问题:我不知道如何创建非对称密钥CodeServerAK,因为现在我没有 dll 的路径。

如何创建非对称密钥?

我想我不需要使用这个sql:

CREATE ASSEMBLY CodeServerDB FROM  'D:\MyPath\bin\Release\CodeServerDB.dll'
    WITH PERMISSION_SET=EXTERNAL_ACCESS
    GO

我已经在 SQL Server 上发布了 VS 项目,并且程序集就在那里。

顺便说一句,程序集是签名的。

【问题讨论】:

    标签: c# sql-server visual-studio-2012 sqlclr


    【解决方案1】:

    作为一个不优雅的解决方案,我有一个预构建步骤,它将密钥文件从相对于项目的路径复制到构建机器和目标 sql 服务器都可以访问的网络共享,例如复制 /Y "$(ProjectDir)bin\Release\CodeServerDB.dll" "\myserver\share\path".

    然后您可以更新 CREATE ASYMMETRIC KEY 命令以引用网络共享。

    我还没有发现如何让 Visual Studio 自动构建和部署非对称密钥。

    旁注:您可以让 Visual Studio 为您构建和部署程序集,而无需参考二进制 dll - 检查 Project Settings SQLCLR 选项卡上的 Generate DDL 选项,CREATE ASSEMBLY 语句是用编码二进制生成

    CREATE ASSEMBLY [My.SQLServer.SQLCLR]
        AUTHORIZATION [dbo]
        FROM 0x4D5A900003{...}0000000000000
        WITH PERMISSION_SET = EXTERNAL_ACCESS;
    

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2014-08-23
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多