我正在编写 SQL Server(针对 2008R2 和 2012)存储过程和公共/参考表的“框架”。每个 SSDT/日期层项目代表此框架内的不同组件(可以在同一数据库中)(例如,MasterDBExtensions 项目在主数据库、SQLServerAgentExtensions (msdb) 等中具有存储过程扩展/附加组件)。
我在很大程度上基于 Schema、数据库角色和证书开发了一个非常严格的安全模型。
我的问题是如何在活动项目和引用的项目之间“共享”/复制这些证书,以便当我将活动项目发布到 SQL Server 时,证书被正确复制等(顺便说一句,我需要共享/复制证书用于跨数据库对象访问,这样我就不需要打开 Trustworthy 标志、Service Broker 以及链接服务器访问)。
只是为了澄清,我有一些 TSQL 代码代表我的意思:
use [DatabaseA]
Create Certificate [MyCertFromA] ...
Backup Certificate [MyCertFromA] to File = 'MyCertFromA.cert'
use [DatabaseB]
Create Certificate [MyCertFromA] from File = 'MyCertFromA.cert'
SSDT/数据层不允许我放置 Backup and Create/From 语句(我得到“此语句在此上下文中无法识别”)。如果我将备份证书移动到前/后脚本,我会遇到文件权限问题和其他问题(例如,未找到证书)。此外,如果我将该项目用作其他项目中的数据库引用,则 Pre/Post 脚本不会运行。
所以......我做错了什么或者有人对这些问题有任何建议吗?
谢谢!
环境:SQL Server 2012(我也针对 SQL Server 2008R2)、MSVS 2010、SqlServer Data Tools 2012 年 12 月、SQL Sever 数据层应用程序框架 2013 年 5 月、C# 4.0