上述消息意味着DDLAdmin
不,这并不意味着。它清楚地表明登录需要VIEW DEFINITION
。虽然ddl_admin
可能有效,但它可能比所需要的要多得多。然而,这就是说,为什么你不作为一个特权帐户部署?如果有的话,我很少看到一个没有以sysadmin
运行的部署过程。那你怎么不是一个开发箱上的系统管理员?;-)
有手头两个问题:
的SSDT过程,做逆向工程,以便它可以拿出一个增量部署脚本,但不是让这个任何改变点,并且
一旦生成脚本就会发布/部署脚本。
你的错误是关于第1部分,但问题是,至少在它是如何措词,关于这两个部分。
因此,要解决第2部分,您需要CREATE
权限(无论是按对象,还是在架构上,还是通过像ddl_admin
这样的固定数据库角色)来创建对象。您还需要能够参加大会。关于大会的ALTER权限,ALTER ASSEMBLY的MSDN页面规定:
需要组件的ALTER权限。额外的要求如下:
- 要改变的组件,其现有的权限集是EXTERNAL_ACCESS,需要EXTERNAL ACCESS ASSEMBLY在服务器上权限。
- 要更改现有权限集为“不安全”的程序集,需要在服务器上有不安全组装权限。
- 要将组件的权限集更改为EXTERNAL_ACCESS,需要服务器上的外部访问组件权限。要将程序集的权限集更改为UNSAFE,需要服务器上的UNSAFE ASSEMBLY权限。
- 指定WITH UNCHECKED DATA,要求ALTER ANY SCHEMA权限。
如果大会用的PERMISSION_SET
要么EXTERNAL_ACCESS
或UNSAFE
,然后之前创建大会上创建的,你应该已经签署了大会(可能是在任何情况下,一个好主意),然后在该组件中创建一个非对称密钥[master]
,然后从该不对称密钥创建一个登录,最后授予该登录EXTERNAL ACCESS ASSEMBLY
或UNSAFE ASSEMBLY
。除非您绝对必须,否则请勿将设置为将包含程序集的数据库设置为TRUSTWORTHY ON
,例如在加载不支持的.NET Framework库的情况下,因为您无法重新签名这些数据库。
有关在使用Visual Studio/SSDT时处理创建非对称密钥和登录的分步指南,请参阅我在SQL Server Central上发布的3部分文章,其中介绍了VS和VS的其他细微差别和SSDT:
Stairway to SQLCLR Level 6: Development Tools Intro(本网站要求免费注册)。
7级专门处理安全/非对称密钥/登录的内容,但最好从6级开始,因为它是级别7和8的设置(它确实是一个必须被破坏的长文章up ;-)。
发布错误消息,可能来自数据库或来自Windows服务器 – JLB
什么版本的SQL Server?如果2012+,这个项目部署模型还是包部署模型?如果包部署模型,你在哪里部署SSIS包? – billinkc
我决定将问题限制在SQL CLR中并单独询问SSIS问题 –