을 사용하여 dacpac 배포의 성능 향상 통합 테스트를 위해 MS SQL Server
localdb
으로 배포하고 있습니다.C#
데이터베이스 프로젝트를 빌드하고 결과로 dacpac
파일이 복사되어 IntegrationTests 프로젝트에서 사용됩니다. 지금까지 우리는이 :
DatabaseProject.sqlproj
bin/debug/DatabaseProject.dacpac
IntegrationTests.csproj
bin/debug/DatabaseProject.dacpac
우리는 새로운 신선한 데이터베이스가 생성되는 IntegrationTests 프로젝트에서 조립 설치를하고 dacpac
는 localdb
에 배포됩니다. TearDown에서는 데이터베이스가 삭제되므로 테스트를위한 결정적인 상태가됩니다.
이
는 사용dacpac
을 배포 코드,
DacServices
(
Microsoft.SqlServer.Dac
,
System.Data.SqlLocalDb
,
System.Data.SqlClient
)입니다 :
public void CreateAndInitializeFromDacpac(
ISqlLocalDbInstance localDbInstance,
string databaseName,
string connectionString,
string dacpacPath)
{
using (var cx = localDbInstance.CreateConnection())
{
cx.Open();
using (var command = new SqlCommand(
string.Format("CREATE DATABASE {0}", databaseName), cx))
command.ExecuteNonQuery();
}
var svc = new DacServices(connectionString);
svc.Deploy(
DacPackage.Load(dacpacPath),
databaseName,
true
);
}
우리는 이제 데이터베이스 프로젝트의 몇 가지를 가지고있다, 그것은 배포하는 방법에 대한 8S 소요 각각. 이는 테스트를 실행하는 전체 시간을 증가시킵니다.
어떻게하면 dacpac
의 배포 성능을 향상시킬 수 있습니까?
비주얼 스튜디오는 어떤 진술이 시간이 걸리는지 추적 할 수있는 방법을 제공합니다. 미세 조정할 수 없으면 병렬 처리를 사용하여 여러 프로젝트를 병렬로 배포하려고합니다. – TheGameiswar
정말로 만들어야합니까? 별도의 단계에서 데이터베이스? 직접 테스트하지 않고,'dacservices'는 dacpac의 모든 객체를 빈 데이터베이스의 객체와 비교할 수 있습니다. –
@GavinCampbell, TheGamesiwar, 귀하의 의견은 유용하며 25 개에서 4.5 개로 4 개 데이터베이스의 전체 시간을 단축 할 수있었습니다. – jruizaranguren