SQL Server の単体テストを実行するには、1 つまたは 2 つの特定の接続文字列を使用してデータベース サーバーに接続する必要があります。 各接続文字列は、テストの一環として特定のスクリプトでタスクまたはタスクのセットを実行するために必要な特定のアクセス許可を持つアカウントを表します。 これらの文字列は、[ SQL Server のテスト構成 ] ダイアログ ボックスで指定することも、テスト プロジェクトの app.config ファイルを手動で編集して指定することもできます。
接続文字列
[SQL Server テスト構成] ダイアログ ボックスでは、次の各アカウントの接続文字列を指定できます。
注
実行コンテキストと特権コンテキストは、SQL Server 認証を使用する場合にのみ異なります。 Windows 認証を使用する場合は、両方の接続文字列に同じ資格情報が使用されます。
実行コンテキスト (必須): テスト スクリプトを実行するためのユーザー アカウント。 この接続文字列には、ユーザーが持つ資格情報と同じものを指定する必要があります。 これは、データベースに適切なアクセス許可が確実に適用されるため、重要です。 詳細については、「 方法: SQL Server の単体テスト実行を構成する」を参照してください。
テスト プロジェクトの
app.configファイルでは、これがExecutionContext要素です。特権コンテキスト (省略可能): テスト前アクション、事後テスト アクション、TestInitialize、および TestCleanup スクリプトを実行するための高いアクセス許可を持つ同じデータベース上のアカウント。 これらのスクリプトは、データベースの状態を設定し、テスト後のアクションに対して、データベース内のオブジェクトを検証するために使用できます。 この接続文字列は、データベースの変更をデプロイし、データを生成するためにも使用されます。
テスト プロジェクトの
app.configファイルでは、この要素はPrivilegedContext要素です。 SQL Server 単体テストでテスト スクリプトのみを実行する場合は、特権コンテキストを指定する必要はありません。
プロジェクト構成ダイアログ ボックスで指定した文字列は、テスト プロジェクトの app.config ファイルに格納されます。 また、そのファイルを直接編集してプロジェクトをリビルドすることもできます。その後、新しい値がダイアログ ボックスに表示されます。
Windows 認証と SQL Server 認証
接続文字列を指定する場合は、Windows 認証と SQL 認証のどちらを使用するかを選択する必要があります。 Windows 認証を選択する理由の 1 つは、SQL Server 認証よりもチームによるテストの使用がサポートされていることです。 SQL Server 認証を選択した場合、接続文字列は、ユーザーの資格情報に基づいて Data Protection API (DPAPI) を使用して暗号化されます。 つまり、このテストプロジェクトのテストは、あなたに対してのみ実行され、チェックイン後にソース管理システムを通じてテストを取得したチームメンバーには実行されません。 このテスト プロジェクトでテストを実行するには、チームの他のユーザーが自分の資格情報を使用してテスト プロジェクトを再構成する必要があります。 これを行うには、 app.config ファイルのコピーを編集するか、プロジェクト構成ダイアログ ボックスを使用します。
Permissions
テスト スクリプトは、実行コンテキストのアクセス許可レベルで実行されます。これは、通常の使用時にデータベースで実行されるユーザー コマンドに対して有効になるのと同じアクセス許可レベルです。 事前テスト アクション、事後テスト、TestInitialize、および TestCleanup スクリプトは、特権コンテキストのアクセス許可レベルで実行されます。
テスト後のアクション スクリプトに使用される高いアクセス許可の接続により、検証を実行できます。 このスクリプトでは、アクセス許可をテストするスクリプト コマンドを実行することもできます。 アクセス許可の詳細については、「SQL Server Data Tools に必要なアクセス許可」の「SQL Server 単体テスト」セクションを参照してください。