Visual Studio でデータベースに対してアクションを実行するには、そのデータベースに対する特定のアクセス許可を持つアカウントでサインインする必要があります。 必要となる特定の権限は、実行するアクションによって異なります。 以下のセクションでは、実行する必要がある各アクションと、それを実行するために必要なアクセス許可について説明します。
データベースを作成またはデプロイするためのアクセス許可
データベースを作成または配置するには、次の権限が必要です。
| アクション | 必要なアクセス許可 |
|---|---|
| データベースのオブジェクトと設定をインポートする | ソース データベースに接続できる必要があります。 ソース データベースが SQL Server 2005 に基づいている場合は、各オブジェクトに対する VIEW DEFINITION 権限も所有しているか、持っている必要があります。ソース データベースが SQL Server 2008 以降に基づいている場合は、各オブジェクトに対する VIEW DEFINITION 権限も所有しているか、持っている必要があります。 ログインには、(データベース暗号化キーの) VIEW SERVER STATE アクセス許可が必要です。 |
| サーバーのオブジェクトと設定をインポートする | 指定したサーバー上のプライマリ データベースに接続できる必要があります。 サーバーが SQL Server 2005 を実行している場合は、サーバーに対する VIEW ANY DEFINITION 権限が必要です。ソース データベースが SQL Server 2008 以降に基づいている場合は、サーバーに対する VIEW ANY DEFINITION 権限が必要です。 ログインには、(データベース暗号化キーの) VIEW SERVER STATE アクセス許可が必要です。 |
| データベース プロジェクトを作成または更新する | データベース プロジェクトを作成または変更するためにデータベース権限は必要ありません。 |
| 新しいデータベースをデプロイするか、 Always Re-create Database オプション セットを使用してデプロイする |
CREATE DATABASE権限を持っているか、ターゲット サーバーの dbcreator ロールのメンバーである必要があります。データベースを作成すると、Visual Studio は model データベースに接続し、その内容をコピーします。 ターゲット データベースへの接続に使用する初期ログイン ( yourLogin など) には、 db_creator と CONNECT SQL のアクセス許可が必要です。 このログインには、 model データベースに対するユーザー マッピングが必要です。
sysadmin 権限がある場合は、次の Transact-SQL ステートメントを発行してマッピングを作成できます。USE [model] CREATE USER yourUser FROM LOGIN yourLogin.ユーザー (この例では yourUser) には、 CONNECT データベースに対するVIEW DEFINITIONとmodelのアクセス許可が必要です。
sysadmin アクセス許可がある場合は、次の Transact-SQL ステートメントを発行して、これらのアクセス許可を付与できます。USE [model] GRANT CONNECT to yourUser GRANT VIEW DEFINITION TO yourUser。名前のない制約を含むデータベースをデプロイし、 CheckNewConstraints オプションが有効になっている場合は、 db_owner または sysadmin のアクセス許可を持っている必要があります。または、配置が失敗します。 (CheckNewConstraints は既定で有効になっています)。この要件は、名前のない制約に対してのみ当てはまります。 |
| 既存のデータベースに更新を配置する | 有効なデータベース ユーザーである必要があります。 また、db_ddladmin ロールのメンバーであるか、スキーマを所有しているか、ターゲット データベースで作成または変更するオブジェクトを所有している必要があります。 配置前スクリプトまたは配置後スクリプトでログインやリンク サーバーなどの高度な概念を使用するには、追加の権限が必要です。 プライマリ データベースにデプロイする場合は、展開先のサーバーに対する VIEW ANY DEFINITION アクセス許可も必要です。 |
データベース プロジェクトで EXTERNAL_ACCESS オプションを指定してアセンブリを使用する |
データベース プロジェクトの TRUSTWORTHY プロパティを設定する必要があります。 SQL Server ログインの EXTERNAL ACCESS ASSEMBLY アクセス許可が必要です。 |
| アセンブリを新しいデータベースまたは既存のデータベースに配置する | ターゲット デプロイ サーバーの sysadmin ロールのメンバーである必要があります。 |
データベースをリファクタリングするためのアクセス許可
データベースのリファクタリングは、データベース プロジェクト内でのみ行われます。 データベース プロジェクトを使用する権限が必要です。 変更をデプロイするまで、ターゲット データベースに対するアクセス許可は必要ありません。
SQL Server データベースで単体テストを実行するためのアクセス許可
データベースで単体テストを実行するには、次の権限が必要です。
| アクション | 必要なアクセス許可 |
|---|---|
| テスト アクションを実行する | 実行コンテキストのデータベース接続を使用する必要があります。 詳細については、「 接続文字列とアクセス許可の概要」を参照してください。 |
| 事前テスト アクションまたは事後テスト アクションを実行する | 特権コンテキストのデータベース接続を使用する必要があります。 このデータベース接続では、実行コンテキスト接続よりも多くの権限が認められます。 |
TestInitializeスクリプトとTestCleanup スクリプトを実行する |
特権コンテキストのデータベース接続を使用する必要があります。 |
| テストの実行前にデータベースの変更を配置する | 特権コンテキストのデータベース接続を使用する必要があります。 詳細については、「 方法: SQL Server の単体テスト実行を構成する」を参照してください。 |
| テストの実行前にデータを生成する | 特権コンテキストのデータベース接続を使用する必要があります。 詳細については、「 方法: SQL Server の単体テスト実行を構成する」を参照してください。 |
データを生成するためのアクセス許可
Data Generator を使用してテスト データを生成するには、ターゲット データベース内のオブジェクトに対する INSERT 権限と SELECT 権限が必要です。 データを生成する前にデータを削除する場合は、ターゲット データベース内のオブジェクトに対する DELETE 権限も必要です。 テーブルの IDENTITY 列をリセットするには、テーブルを所有しているか、 db_owner ロールまたは db_ddladmin ロールのメンバーである必要があります。
スキーマとデータを比較するためのアクセス許可
スキーマまたはデータを比較するには、次の権限が必要です。
| アクション | 必要なアクセス許可 |
|---|---|
| 2 つのデータベースのスキーマを比較する | データベースを作成または配置する権限の説明に従って、データベースからオブジェクトと設定 をインポートする権限が必要です。 |
| データベースとデータベース プロジェクトのスキーマを比較する | データベースを作成または配置する権限の説明に従って、データベースからオブジェクトと設定 をインポートする権限が必要です。 また、Visual Studio でデータベース プロジェクトを開いておくことも必要です。 |
| ターゲット データベースに更新を書き込む | 「データベースを作成または配置する権限」の説明に従って、ターゲット データベースに更新プログラム をデプロイするためのアクセス許可が必要です。 |
| 2 つのデータベースのデータを比較する | 2 つのデータベースのスキーマを比較するために必要なアクセス許可に加えて、比較するすべてのテーブルに対する SELECT 権限が必要です。
VIEW DATABASE STATEアクセス許可も必要です。 |
Transact-SQL エディターを実行するためのアクセス許可
ターゲット データベースへの実行コンテキストによって、Transact-SQL エディター内で実行できる操作が決まります。
SQL Server CLR プロジェクトのアクセス許可
次の表に、共通言語ランタイム (CLR) プロジェクトをデプロイまたはデバッグするために必要なアクセス許可を示します。
| アクション | 必要なアクセス許可 |
|---|---|
| 安全なアクセス許可セット アセンブリを (最初または段階的に) 配置する |
db_DDLAdmin権限は、配置するアセンブリとオブジェクトの種類に対するCREATEおよびALTER権限を付与します。デプロイには、データベース レベルの VIEW DEFINITION アクセス許可が必要です。データベース レベルの CONNECT 権限は、データベースに接続する権限を付与します。 |
| 外部アクセス用のアクセス許可セット アセンブリを配置する |
db_DDLAdminアクセス許可は、展開するアセンブリとオブジェクトの種類に対するCREATEおよびALTERのアクセス許可を付与します。デプロイには、データベース レベルの VIEW DEFINITION アクセス許可が必要です。データベース レベルの CONNECT 権限は、データベースに接続する権限を付与します。また、 TRUSTWORTHY データベース オプションを ON に設定する必要があります。展開に使用するログインには、 外部アクセス アセンブリ サーバーのアクセス許可が必要です。 |
| UNSAFE 権限セットのアセンブリを配置する |
db_DDLAdminアクセス許可は、展開するアセンブリとオブジェクトの種類に対するCREATEおよびALTERのアクセス許可を付与します。デプロイには、データベース レベルの VIEW DEFINITION アクセス許可が必要です。データベース レベルの CONNECT 権限は、データベースに接続する権限を付与します。また、 TRUSTWORTHY データベース オプションを ON に設定する必要があります。展開に使用するログインには、 安全でないアセンブリ サーバーのアクセス許可が必要です。 |
| SQL CLR アセンブリをリモートでデバッグする | sysadmin 固定ロールのアクセス許可が必要です。 |
重要
いずれの場合も、アセンブリの所有者は、アセンブリの配置に使用しているユーザーであるか、そのユーザーがメンバーであるロールである必要があります。 この要件は、配置するアセンブリによって参照されるアセンブリにも適用されます。