次の方法で共有


Visual Studio のデータベース機能に必要なアクセス許可

Visual Studio でデータベースに対してアクションを実行するには、そのデータベースに対する特定のアクセス許可を持つアカウントでログオンする必要があります。 どのような特定のアクセス許可が必要かは、実行するアクションによって異なります。 以下のセクションでは、実行するアクションと、各アクションを実行するために必要な特定のアクセス許可について説明します。

  • データベースを作成および配置するためのアクセス許可

  • データベースをリファクタリングするためのアクセス許可

  • データベースに対して単体テストを実行するためのアクセス許可

  • データを生成するためのアクセス許可

  • スキーマおよびデータを比較するためのアクセス許可

  • Transact-SQL (T-SQL) エディターを実行するためのアクセス許可

  • SQL Server 共通言語ランタイム (SQL CLR) プロジェクトのアクセス許可

データベースを作成および配置するためのアクセス許可

データベースを作成または配置するには、次のアクセス許可が必要です。

アクション

必要なアクセス許可

データベース オブジェクトと設定のインポート

ソース データベースに接続できる必要があります。

  • ソース データベースが 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 アクセス許可 (データベースの暗号化キー用) が必要です。

データベース プロジェクトの作成または更新

データベース プロジェクトの作成または変更に、データベースのアクセス許可は不要です。

新しいデータベースの配置、または [データベースを常に再作成] をオンにした配置

CREATE DATABASE アクセス許可を持っているか、ターゲット サーバーの dbcreator ロールのメンバーである必要があります。

データベースを作成すると、Visual Studio はモデル データベースに接続し、内容をコピーします。 ターゲット データベースの接続に使用する最初のログイン (たとえば、"yourLogin" など) には、db_creator および CONNECT SQL のアクセス許可が必要です。 このログインは、モデル データベース上にユーザー マッピングを持っている必要があります。 sysadmin アクセス許可を持っている場合、次の Transact-SQL ステートメントを発行してマッピングを作成できます。

USE [model]
CREATE USER yourUser FROM LOGIN yourLogin

ユーザー (この例では yourUser) は、モデル データベースに対して CONNECT および VIEW DEFINITION のアクセス許可を持っています。 sysadmin アクセス許可を持っている場合、次の Transact-SQL ステートメントを発行してこれらのアクセス許可を付与できます。

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

名前のない制約を含むデータベースを配置し、CheckNewContraints オプションが有効な場合 (既定で有効)、db_owner アクセス許可または sysadmin アクセス許可がないと、配置に失敗します。 これは、名前のない制約にのみ当てはまります。 CheckNewConstraints オプションの詳細については、「データベース プロジェクト設定の概要」を参照してください。

既存のデータベースへの更新の配置

有効なデータベース ユーザーである必要があります。 また、db_ddladmin ロールのメンバーであるか、スキーマを所有しているか、ターゲット データベースの作成または変更するオブジェクトを所有している必要があります。 配置前スクリプトや配置後スクリプトでログイン サーバーやリンク サーバーなどの高度な概念を使用する場合は、さらに別のアクセス許可が必要です。

重要 :重要
マスター データベースに配置する場合、配置するサーバーに対する VIEW ANY DEFINITION アクセス許可が必要です。

データベース プロジェクトの EXTERNAL_ACCESS オプションが設定されたアセンブリの使用

データベース プロジェクトの TRUSTWORTHY プロパティを設定する必要があります。 SQL Server ログインに EXTERNAL ACCESS ASSEMBLY アクセス許可が与えられている必要があります。

新規または既存のデータベースへのアセンブリの配置

配置先サーバーの sysadmin ロールのメンバーである必要があります。

詳細については、SQL Server 2005 Books Online または SQL Server 2008 オンライン ブックを参照してください。

データベースをリファクタリングするためのアクセス許可

データベース リファクタリングは、データベース プロジェクト内でのみ発生します。 データベース プロジェクトを使用するためのアクセス許可が必要です。 変更をターゲット データベースに配置するまでは、ターゲット データベースに対するアクセス許可は必要ありません。

データベースに対して単体テストを実行するためのアクセス許可

データベースに対して単体テストを実行するには、次のアクセス許可が必要です。

アクション

必要なアクセス許可

テスト アクションの実行

実行コンテキストのデータベース接続を使用する必要があります。 詳細については、「接続文字列とアクセス許可の概要」を参照してください。

テスト前アクションまたはテスト後アクションの実行

特権コンテキストのデータベース接続を使用する必要があります。 このデータベース接続では、実行コンテキスト接続よりも多くのアクセス許可が認められます。

TestInitialize スクリプトと TestCleanup スクリプトの実行

特権コンテキスト データベース接続を使用する必要があります。

テスト実行前のデータベースの変更の配置

特権コンテキスト データベース接続を使用する必要があります。 詳細については、「方法 : データベース単体テストの実行を構成する」を参照してください。

テスト実行前のデータ生成

特権コンテキストのデータベース接続を使用する必要があります。 詳細については、「方法 : データベース単体テストの実行を構成する」を参照してください。

データを生成するためのアクセス許可

データ ジェネレーターを使用してテスト データを生成するには、ターゲット データベースのオブジェクトに対する INSERT および SELECT のアクセス許可が必要です。 データを生成する前にデータを削除する場合、ターゲット データベースのオブジェクトに対する DELETE アクセス許可が必要です。 テーブルの IDENTITY 列をリセットするには、テーブルを所有しているか、db_owner または db_ddladmin ロールのメンバーである必要があります。

スキーマおよびデータを比較するためのアクセス許可

スキーマまたはデータを比較するには、次のアクセス許可が必要です。

アクション

必要なアクセス許可

2 つのデータベースのスキーマの比較

「データベースを作成または配置するアクセス許可」の説明に従い、データベースのオブジェクトと設定をインポートするアクセス許可が必要です。

データベースのスキーマとデータベース プロジェクトのスキーマの比較

「データベースを作成または配置するアクセス許可」の説明に従い、データベースのオブジェクトと設定をインポートするアクセス許可が必要です。 また、Visual Studio でデータベース プロジェクトを開いている必要があります。

ターゲット データベースへの更新の書き込み

「データベースを作成または配置するアクセス許可」の説明に従い、ターゲット データベースに更新を配置するアクセス許可が必要です。

2 つのデータベースのデータの比較

2 つのデータベースのスキーマの比較に必要なアクセス許可に加えて、比較するすべてのテーブルに対する SELECT アクセス許可が必要です。

詳細については、Microsoft の Web サイト「SQL Server 2008 Books Online」または「 SQL Server 2005 Books Online」の該当するページを参照してください。

Transact-SQL エディターを実行するためのアクセス許可

Transact-SQL エディターで実行できる操作は、ターゲット データベースに対する実行コンテキストによって決定されます。

SQL Server 共通言語ランタイム (SQL CLR) プロジェクトのアクセス許可

次の表は、SQL CLR プロジェクトを配置またはデバッグするために必要なアクセス許可の一覧です。

アクション

必要なアクセス許可

安全なアクセス許可セット アセンブリの配置 (初回または増分)

  • db_DDLAdmin - このアクセス許可は、配置するアセンブリおよびオブジェクトの種類に対する CREATE アクセス許可と ALTER アクセス許可を付与します。

  • データベース レベルの VIEW DEFINITION - 配置するために必要です。

  • データベース レベルの CONNECT - データベースに接続できるようにします。

外部アクセス許可セット アセンブリの配置

  • db_DDLAdmin - このアクセス許可は、配置するアセンブリおよびオブジェクトの種類に対する CREATE アクセス許可と ALTER アクセス許可を付与します。

  • データベース レベルの VIEW DEFINITION - 配置するために必要です。

  • データベース レベルの CONNECT - データベースに接続できるようにします。

さらに、次のアクセス許可も必要です。

  • TRUSTWORTHY データベース オプションが ON に設定されている必要があります。

  • 配置に使用するログインに、アセンブリへの外部アクセス サーバー権限が必要です。

安全でないアクセス許可セット アセンブリの配置

  • db_DDLAdmin - このアクセス許可は、配置するアセンブリおよびオブジェクトの種類に対する CREATE アクセス許可と ALTER アクセス許可を付与します。

  • データベース レベルの VIEW DEFINITION - 配置するために必要です。

  • データベース レベルの CONNECT - データベースに接続できるようにします。

さらに、次のアクセス許可も必要です。

  • TRUSTWORTHY データベース オプションが ON に設定されている必要があります。

  • 配置に使用するログインに、安全ではないアセンブリ サーバー権限が必要です。

SQL CLR アセンブリのリモート デバッグ

sysadmin 固定ロールのアクセス許可が必要です。

重要

いずれの場合も、アセンブリ所有者はアセンブリの配置に使用しているユーザーであるか、ユーザーがメンバーとなっているロールである必要があります。 この要件は、配置するアセンブリにより参照されるすべてのアセンブリにも適用されます。

参照

概念

Visual Studio でのデータベースおよびデータ層アプリケーションの作成と管理

データベースのチーム開発の開始