SQL Server Data Tools 的必要權限

在 Visual Studio 中若要對資料庫執行動作,您用來登入的帳戶必須對該資料庫具備特定的權限。 依您想要執行的動作而定,所需的特定權限將有所不同。 下列各節將描述您可能會執行的每一個動作,以及執行該動作所需要的特定權限。

建立或部署資料庫時的權限

您必須具備下列權限,才能建立或部署資料庫。

動作 必要權限
匯入資料庫物件和設定 您必須能夠連接至來源資料庫。

如果來源資料庫以 SQL Server 2005 為基礎,您還必須擁有每一個物件或對其具備 VIEW DEFINITION 權限。

如果來源資料庫以 SQL Server 2008 或更新版本為基礎,您還必須擁有每一個物件或對其具備 VIEW DEFINITION 權限。 您的登入必須具備 VIEW SERVER STATE 權限 (用於資料庫加密金鑰)。
匯入伺服器物件和設定 您必須能夠連接至指定的伺服器上的 master 資料庫。

如果伺服器執行 SQL Server 2005,您必須對該伺服器具備 VIEW ANY DEFINITION 權限。

如果來源資料庫以 SQL Server 2008 或更新版本為基礎,您必須對伺服器具備 VIEW ANY DEFINITION 權限。 您的登入必須具備 VIEW SERVER STATE 權限 (用於資料庫加密金鑰)。
建立或更新資料庫專案 您不需要有任何的資料庫權限,就能建立或修改資料庫專案。
部署新的資料庫或在已設定 [永遠重新建立資料庫] 選項的情況下部署 您必須對目標伺服器具備 CREATE DATABASE 權限或是其 dbcreator 角色的成員。

當您建立資料庫時,Visual Studio 會連接至 model 資料庫並複製此資料庫的內容。 用以連線到目標資料庫的初始登入 (例如 yourLogin) 必須具備 db_creatorCONNECT SQL 權限。 此登入必須在 model 資料庫上已有使用者對應。 如果您具備 sysadmin 權限,即可藉由發出下列 Transact-SQL 陳述式以建立對應:

USE [model] CREATE USER yourUser FROM LOGIN yourLogin

使用者 (在本例中為 yourUser) 必須對模型資料庫具備 CONNECTVIEW DEFINITION 權限。 如果您具備 sysadmin 權限,即可藉由發出下列 Transact-SQL 陳述式以授與這些權限:

USE [model] GRANT CONNECT to yourUser GRANT VIEW DEFINITION TO yourUser

如果部署的資料庫包含未命名的限制式並已啟用 CheckNewContraints 選項 (預設為啟用),您必須具備 db_ownersysadmin 權限,否則部署將會失敗。 這只限於有未命名的條件約束時才會發生。 如需 CheckNewConstraints 選項的詳細資訊,請參閱 資料庫專案設定
將更新部署至現有的資料庫 您必須是有效的資料庫使用者。 您也必須是 db_ddladmin 角色的成員、擁有結構描述,或者擁有目標資料庫上您想要建立或修改的物件。 在預先部署或部署後指令碼中運用更進階的概念 (例如登入或連結的伺服器) 時,您還需要額外的權限。

注意: 如果部署至 master 資料庫,您也必須對部署的目標伺服器具備 VIEW ANY DEFINITION 權限。
在資料庫專案中搭配 EXTERNAL_ACCESS 選項使用組件 您必須為資料庫專案設定 TRUSTWORTHY 屬性。 您的 SQL Server 登入必須具備 EXTERNAL ACCESS ASSEMBLY 權限。
將組件部署至新資料庫或現有的資料庫 您必須是目標部署伺服器上 sysadmin 角色的成員。

如需詳細資訊,請參閱《SQL Server 線上叢書》。

重構資料庫時的權限

「資料庫重構」僅發生在資料庫專案內。 您必須具備使用資料庫專案方面的權限。 對於目標資料庫,只有當您將變更部署至其中時才需要相關權限。

對 SQL Server 資料庫執行單元測試時的權限

您必須具備下列權限,才能對資料庫執行單元測試。

動作 必要權限
執行測試動作 您必須使用執行內容資料庫連接。 如需詳細資訊,請參閱連接字串和權限概觀
執行測試前或測試後動作 您必須使用有權限的內容資料庫連接。 這種資料庫連接比執行內容連接具備更多的權限。
執行 TestInitialize 和 TestCleanup 指令碼 您必須使用有權限的內容資料庫連接。
在執行測試之前部署資料庫變更 您必須使用有權限的內容資料庫連接。 如需詳細資訊,請參閱如何:設定 SQL Server 單元測試執行
在執行測試之前產生資料 您必須使用有權限的內容資料庫連接。 如需詳細資訊,請參閱如何:設定 SQL Server 單元測試執行

產生資料時的權限

您必須對目標資料庫中的物件具備 INSERTSELECT 權限,才能使用資料產生器產生測試資料。 如果您在產生資料之前清除資料,則也必須對目標資料庫中的物件具備 DELETE 權限。 如果要重設資料表的 [識別] 欄位,您必須擁有該資料表或者是 db_owner 或 db_ddladmin 角色的成員。

比較結構描述和資料時的權限

您必須具備下列權限,才能比較結構描述或資料。

動作 必要權限
比較兩個資料庫的結構描述 您必須依建立或部署資料庫時的權限中所述,具備從資料庫匯入物件和設定的權限。
比較資料庫與資料庫專案的結構描述 您必須依建立或部署資料庫時的權限中所述,具備從資料庫匯入物件和設定的權限。 您也必須在 Visual Studio 中開啟資料庫專案。
將更新寫入目標資料庫 您必須依建立或部署資料庫時的權限中所述,具備將更新部署至目標資料庫的權限。
比較兩個資料庫的資料 除了比較兩個資料庫的結構描述所需的權限,您還必須對想要比較的所有資料表具備 SELECT 權限,再加上 VIEW DATABASE STATE 權限。

如需詳細資訊,請參閱《SQL Server 線上叢書》。

執行 Transact-SQL 編輯器時的權限

您能夠在 Transact-SQL 編輯器內執行的作業取決於對目標資料庫的執行內容而定。

SQL Server 通用語言執行平台專案方面的權限

下表列出部署或偵錯 CLR 專案時所需的權限:

動作 必要權限
safe 權限集合組件的部署 (初始或累加) db_DDLAdmin - 此權限將針對您所部署的組件及物件類型授與 CREATE 和 ALTER 權限

資料庫層級 VIEW DEFINITION - 部署時所需之權限

資料庫層級 CONNECT - 授與連接至資料庫的能力
部署 external_access 權限集合組件 db_DDLAdmin - 此權限將針對您所部署的組件及物件類型授與 CREATE 和 ALTER 權限

資料庫層級 VIEW DEFINITION - 部署時所需之權限

資料庫層級 CONNECT - 授與連接至資料庫的能力

此外也必須符合以下條件:

將 TRUSTWORTHY 資料庫選項設定為 ON

部署時所使用的登入必須具備 External Access Assembly 伺服器權限
部署 unsafe 權限集合組件 db_DDLAdmin - 此權限將針對您所部署的組件及物件類型授與 CREATE 和 ALTER 權限

資料庫層級 VIEW DEFINITION - 部署時所需之權限

資料庫層級 CONNECT - 授與連接至資料庫的能力

此外也必須符合以下條件:

將 TRUSTWORTHY 資料庫選項設定為 ON

部署時所使用的登入必須具備 Unsafe Assembly 伺服器權限
遠端偵錯 SQL CLR 組件 必須具備 sysadmin 固定角色權限

重要

無論何種情況,組件擁有者都必須是您用來部署組件的使用者,或擁有者必須是該使用者隸屬為成員的角色。 此需求也適用於由您部署的組件所參考的任何組件。

另請參閱

建立和定義 SQL Server 單元測試
SQL Server Data Tools