2017-05-04 14 views
0

우리는 내가 사용 여부에 따라 다른 변경 스크립트를 생성하는 제작 프로파일과 Visual Studio를 데이터베이스 프로젝트를 비주얼 스튜디오의 명령 줄에서 스크립트 옵션 또는 SQL 패키지 생성 :SqlPackage 스크립트 동작과 VisualStudio 생성 스크립트가 다른 결과를 생성하는 이유는 무엇입니까?

  • 비주얼 스튜디오가 10,455을 만듭니다 KB 파일.
  • SqlPackage 다음 명령을 사용하여 8,835킬로바이트 파일을 만듭니다 : SqlPackage /a:Script /sf:pub.dacpac /pr:pub.profile.xml

VS는 스크립트를 생성하는 데 사용하는 명령 줄을 관찰하는 방법에 대한 어떤 제안? 두 프로세스 모두 다음 게시 프로파일을 사용할 때 차이점은 무엇입니까?

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <IncludeCompositeObjects>True</IncludeCompositeObjects> 
    <TargetDatabaseName>nrc_gateway</TargetDatabaseName> 
    <DeployScriptFileName>clm_model.publish.sql</DeployScriptFileName> 
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss> 
    <ScriptDatabaseCompatibility>True</ScriptDatabaseCompatibility> 
    <ProfileVersionNumber>1</ProfileVersionNumber> 
    <DropDmlTriggersNotInSource>False</DropDmlTriggersNotInSource> 
    <DropIndexesNotInSource>False</DropIndexesNotInSource> 
    <TargetConnectionString>Data Source=.;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString> 
    <AllowIncompatiblePlatform>True</AllowIncompatiblePlatform> 
    <DropConstraintsNotInSource>False</DropConstraintsNotInSource> 
    <DropExtendedPropertiesNotInSource>False</DropExtendedPropertiesNotInSource> 
    <VerifyDeployment>False</VerifyDeployment> 
    <BlockWhenDriftDetected>False</BlockWhenDriftDetected> 
    <RegisterDataTierApplication>False</RegisterDataTierApplication> 
    <IncludeTransactionalScripts>True</IncludeTransactionalScripts> 
    <ExcludeUsers>True</ExcludeUsers> 
    <ExcludeDatabaseRoles>False</ExcludeDatabaseRoles> 
    <DropObjectsNotInSource>False</DropObjectsNotInSource> 
    <DoNotDropAggregates>False</DoNotDropAggregates> 
    <DoNotDropApplicationRoles>False</DoNotDropApplicationRoles> 
    <DoNotDropAssemblies>False</DoNotDropAssemblies> 
    <DoNotDropAsymmetricKeys>False</DoNotDropAsymmetricKeys> 
    <DropPermissionsNotInSource>False</DropPermissionsNotInSource> 
    <GenerateSmartDefaults>True</GenerateSmartDefaults> 
    <ScriptNewConstraintValidation>True</ScriptNewConstraintValidation> 
    </PropertyGroup> 
</Project> 
+0

파일의 다른 점은 무엇입니까? 윈디프 (windiff)는 무엇을 생각합니까? –

답변

1

Visual Studio는 CLI를 사용하여 스크립트를 생성하지 않으므로 상호 작용을 관찰 할 수있는 옵션이 없습니다. (공용 Microsoft.SqlServer.Dac API도 사용하지 않습니다.이 기능을 제공하는 어셈블리에 대한 내부 액세스 권한이 내부에 있습니다.

나는 아마도 SqlPackage.exe의 버전과 SSDT의 버전이 동일한 지 확인함으로써 시작할 것입니다. SqlPackage.exe의 이전 버전은 일부 최신 데이터베이스 옵션 (예 : 데이터베이스 범위 구성 설정)을 스크립팅하지 않을 수 있습니다.

SqlPackage의 VS의 사본이 여기에 살고

:

c:\program files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SqlDB\DAC\140 

(. 그 마지막 "(140)"폴더가 실제로 설치되어 SSDT의 특정 버전에 따라 130 또는 120을 수 있습니다 주)

을 대부분 DacFramework.msi의 특정 버전에 따라

C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin 

(참고, 다시, (140)가 될 수 있다고 (130) 또는 (120) : 사람들은 여기에서 SQL Server 디렉토리에서 SqlPackage.exe를 실행 설치됨).

그러나 SqlPackage.exe가있는 곳마다 파일 버전이 Visual Studio 복사본과 일치하는지 확인하십시오.