上述消息意味着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問題 –