使用dacpac打开TRUSTWORTHY

时间:2014-12-01 20:35:41

标签: sql-server sqlclr sql-server-data-tools dac

我正在创建一个带有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

调整这个词暗示已更改给我。这是一个新的数据库。但是,如果即使对于新数据库也是如此,为什么对话框中存在该设置?作为预部署的一部分,我是否需要编写脚本?

2 个答案:

答案 0 :(得分:3)

因为你已经拥有了'34;值得信赖的" "杂项"中的复选框选中选项卡,您只需确保您可以选择"部署数据库属性"选中(或设置为true)。此选项将位于不同的位置,具体取决于您的发布方式。有些地方包括:

  • 进入" Build"菜单并选择"发布{项目名称} ..."
    • "发布数据库"向导出现。
    • 点击"高级..."按钮
    • 顶部复选框用于"部署数据库属性"


  • 使用 SqlPackage.exe
    • 通过个人资料文件传递:<ScriptDatabaseOptions>True</ScriptDatabaseOptions>
    • 通过命令行传递:/p:ScriptDatabaseOptions = True


  • MSDeploy 与dbSqlPackage提供程序一起使用:
    • 选项为: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