我正在创建一个带有SSDT数据库项目的数据库,并将其部署为dacpac。 .NET程序集是项目的一部分,在部署期间安装失败,并显示以下错误消息:
为汇编' xyz'创建汇编。失败,因为集会 ' XYZ'未获得PERMISSION_SET = UNSAFE的授权。该 如果满足以下任一条件,则授权程序集: 数据库所有者(DBO)具有UNSAFE ASSEMBLY权限和数据库 有TRUSTWORTHY数据库属性;或者大会签署 使用具有相应登录名的证书或非对称密钥 获得UNSAFE ASSEMBLY许可。
dbo是'。我已进入项目属性并检查了“可信赖的"在杂项选项卡下。但是,我仍然得到错误,当我运行
select name, is_trustworthy_on from sys.databases
我看到is_trustworthy_on
为0.看来此设置无效。搜索后,我发现了以下内容:
某些数据库选项,例如TRUSTWORTHY,DB_CHAINING和 HONOR_BROKER_PRIORITY,无法作为部署的一部分进行调整 过程
来自http://msdn.microsoft.com/en-us/library/ee210569.aspx
调整这个词暗示已更改给我。这是一个新的数据库。但是,如果即使对于新数据库也是如此,为什么对话框中存在该设置?作为预部署的一部分,我是否需要编写脚本?
答案 0 :(得分:3)
因为你已经拥有了'34;值得信赖的" "杂项"中的复选框选中选项卡,您只需确保您可以选择"部署数据库属性"选中(或设置为true)。此选项将位于不同的位置,具体取决于您的发布方式。有些地方包括:
<ScriptDatabaseOptions>True</ScriptDatabaseOptions>
/p:ScriptDatabaseOptions = True
ScriptDatabaseOptions=True
答案 1 :(得分:0)
您是否收到消息说您必须是系统管理员?执行部署的用户需要位于sysadmin组中。有一些设置包含在:
如果IS_SRVROLEMEMBER(N'sysadmin')= 1 开始 如果存在(选择1 FROM [master]。[dbo]。[sysdatabases] WHERE [name] = N'$(DatabaseName)') 开始 执行sp_executesql N'ALTER DATABASE [$(DatabaseName)] 设置TRUSTWORTHY ON 随着ROLLBACK IMMEDIATE'; 结束 结束 其他 开始 PRINT N'无法修改数据库设置。您必须是SysAdmin才能应用这些设置。'; END