VSDBCMD.EXE 명령줄 참조(배포 및 스키마 가져오기)

업데이트: 2010년 7월

VSDBCMD.EXE를 다음 작업에 사용할 수 있습니다.

  • 라이브 데이터베이스에서 .dbschema 파일로 데이터베이스 스키마 가져오기

  • .dbschema 파일에서 배포 스크립트 생성

  • .dbschema 파일에서 배포 스크립트를 생성하고 대상 데이터베이스에 해당 스크립트를 배포합니다

  • .dbschema 파일 두 개를 비교하여 배포 스크립트를 생성합니다.

또한 데이터베이스를 배포하거나 가져오는 방법을 사용자 지정하는 옵션을 지정할 수 있습니다.

이 도구를 사용하는 방법에 대한 자세한 내용은 방법: VSDBCMD.EXE를 사용하여 명령 프롬프트에서 데이터베이스 배포 준비방법: 명령 프롬프트에서 스키마 가져오기을 참조하십시오.

중요

VSDBCMD.EXE를 사용하여 DAC(데이터 계층 응용 프로그램 구성 요소) 프로젝트에 배포하거나 스키마를 DAC 프로젝트로 가져올 수는 없습니다.

일반 옵션

다음 표의 옵션은 배포 및 가져오기 작업 모두에 적용됩니다.

Option

약식

필수 여부

참고

/Action:{Import|Deploy}

/a:{Import|Deploy}

개체 및 설정을 .dbschema 파일로 가져올 것인지 또는 대상 서버 또는 데이터베이스 .dbschema 파일을 배포할 것인지 지정합니다.

/ConnectionString:"String"

/cs:"String"

아니요

대상 데이터베이스에 대한 연결 문자열을 지정합니다. 예를 들어 /cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008"를 지정할 수 있습니다. 스키마를 가져오려면 Initial Catalog를 사용하여 데이터베이스 이름을 지정해야 합니다. 연결 문자열 구문에 대한 자세한 내용은 연결 문자열 구문(ADO.NET)을 참조하십시오.

/DatabaseSchemaProvider:DspName

/dsp:DspName

연결 중인 데이터베이스 스키마 공급자의 형식을 지정합니다. 예를 들어, SQL Server에 /dsp:SQL을 사용하십시오.

@File

사용할 수 없음

아니요

명령줄 옵션이 하나 이상 들어 있는 응답 파일을 지정할 수 있습니다.

/Quiet[+|-]

/q

아니요

자세한 의견을 VSDBCMD에서 표시하지 않을 것인지 여부를 지정합니다.

/DeployToDatabase[+|-]

/dd

아니요

배포 스크립트를 생성하고 대상 데이터베이스에 배포하는 것을 지정합니다. 이 옵션을 지정하지 않으면 배포 스크립트가 생성되지만 해당 스크립트는 배포되지 않습니다.

/ModelFile:FileName

/model:FileName

아니요

스키마를 가져올 때 배포하거나 만들려는 .dbschema 파일의 이름을 지정합니다. 이는 배포 매니페스트를 지정할 경우 필요하지 않습니다.

/Properties:PropertyName=PropertyValue

/p:PropertyName=PropertyValue

아니요

속성 이름 및 명령 프롬프트에서 재정의하려는 값을 지정합니다. 이러한 작업 관련 속성은 배포 옵션 및 가져오기 옵션을 참조하십시오.

배포 옵션

다음 표의 옵션은 .dbschema 파일을 배포할 때만 적용됩니다.

Option

약식

필수 여부

참고

/ManifestFile:FileName

/manifest:FileName

아니요

데이터베이스를 배포할 때 사용할 배포 매니페스트 파일을 지정합니다. 데이터베이스 프로젝트를 빌드할 때 빌드 출력 경로에 배포 매니페스트를 만듭니다.

참고참고
배포 매니페스트 파일이 이미 있고 읽기 전용인 출력 스크립트 파일을 참조하면 배포가 실패합니다.

/DeploymentScriptFile:FileName

/script:FileName

아니요

배포 스크립트에 부여할 이름을 지정합니다.

/ExtensionArguments

/ext:String

아니요

사용자 지정 배포 참가자에게 전달되는 매개 변수 이름/값 쌍을 지정합니다.

/TargetModelFile: FileName

/targetmodel: FileName

아니요

원본 .dbschema 파일에 비교하려는 대상 .dbschema 파일을 지정합니다. 두 .dbschema 파일을 비교하여 배포 스크립트를 생성하려 할 때 이 옵션을 사용합니다. 자세한 내용은 VSDBCMD.EXE를 사용하여 스키마 비교을 참조하십시오.

참고

증분 배포 스크립트를 만들 때 소스와 대상 데이터베이스 이름이 일치해야 합니다.

명령줄에 대한 개별 SQLCMD 변수 재정의

다음 구문을 사용하여 단일 SQLCMD 변수의 값을 재정의할 수 있습니다.

/p: SqlCmdVariableName =

.sqlcmdvars 파일에 선언되지 않은 변수 이름을 지정하면 오류가 발생합니다.

세 지점에 SQLCMD 변수를 지정할 수 있으며, 다음 순서로 적용됩니다.

  1. 디자인 타임에 Database.sqlcmdvars에서 deployment 매니페스트가 가리킴

  2. /p:SqlCommandVariablesFile=Filepath를 지정하여 명령줄에서

  3. 특정 변수 이름과 값을 지정하여 명령줄에서

두 번째 메서드는 첫 번째를 재정의하고 세 번째는 두 번째 및 첫 번째를 재정의합니다.

일반적인 배포 속성

명령 프롬프트에서 .dbschema 파일을 배포할 때 다음 표에서 속성을 지정할 수 있습니다.

Option

기본값

참고

/p:AbortOnFirstError={True|False}

True

첫 번째 오류가 발생할 때 배포를 취소할지 여부를 지정합니다.

/p:AlwaysCreateNewDatabase={True|False}

False

데이터베이스를 업데이트해야 하는지 여부 또는 여부와 이를 합니다 수 삭제하고 변경 내용을 배포할 때 다시 지정합니다.

/p:AnsiNulls={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

ANSI_NULLS 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:AnsiPadding={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

ANSI_PADDING 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:AnsiWarnings={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

ANSI_WARNINGS 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:ArithAbort={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

ARITH_ABORT 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:BlockIncrementalDeploymentIfDataLoss={True|False}

True

데이터 손실이 발생할 경우 배포를 중지할지 여부를 지정합니다.

/p:CheckNewConstraints={True|False}

True

제약 조건을 만들거나 다시 만들 때 기본적으로 NOCHECK 옵션이 설정된 상태로 제약 조건을 만들지 여부를 지정합니다. 배포 스크립트의 끝 부분에 모든 제약 조건을 하나의 집합으로 검사하는 문 블록이 추가됩니다. 이 속성을 True로 설정하면 배포 스크립트가 종료될 때까지 데이터 검사를 지연시켜 배포 프로세스 도중에 CHECK 제약 조건이나 외래 키 제약 조건으로 인해 데이터 오류가 발생하는 문제 없이 스키마를 배포할 수 있습니다.

/p:CollationPreference={UseSourceModelCollation | UseTargetModelCollation }

UseSourceModelCollation

원본 및 대상 모델 비교할 때 사용되는 데이터 정렬을 지정합니다.

/p:CommentOutSetVarDeclarations={True|False}

False

배포 스크립트 변수 주석으로 처리할 수 값을 지정하는 SETVAR 문을 사용할지 여부를 지정합니다. SQLCMD를 사용하여 스크립트를 배포하고 명령 프롬프트에서 이러한 변수의 값을 지정하려는 경우 이 속성을 True로 설정할 수 있습니다.

/p:ConcatNullYieldsNull={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

CONCAT_NULL_YIELDS_NULL 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:DeployDatabaseProperties={True|False}

True

데이터베이스 속성을 배포 스크립트의 일부로 설정하거나 업데이트해야 하는지 여부를 지정합니다.

/p:DeploymentCollationPreference={UseSourceModelCollation|UseTargetModelCollation|DontChangeCollations}

DontChangeCollations

이 설정은 배포하는 동안 데이터베이스의 데이터 정렬을 처리하는 방법을 결정합니다. 세 가지 가능한 값이 있습니다. UseSourceModelCollation은 소스에서 지정한 데이터 정렬과 일치하지 않을 경우 대상 데이터베이스 데이터 정렬이 업데이트됨을 나타냅니다. UseTargetModelCollation은 대상 데이터베이스(또는 서버) 데이터 정렬을 사용해야 함을 나타냅니다. DontChangeCollations는 서버의 데이터 정렬을 변경해서는 안 됨을 나타냅니다.

/p:DeploymentConfigurationFile=fileName

.deploymanifest 파일에서 지정한 .sqldeployment 파일.

배포할 때 사용할 .sqldeployment 파일을 지정합니다.

/p:DisableAndReenableDdlTriggers={True|False}

True

배포 프로세스가 시작될 때 DDL(데이터 정의 언어) 트리거를 사용하지 않도록 설정했다가 배포 프로세스가 종료될 때 다시 사용하도록 설정할지 여부를 지정합니다.

/p:DoNotUseAlterAssemblyStatementsToUpdateCLRTypes={True|False}

False

ALTER ASSEMBLY 문을 실행하는 대신 차이가 있는 경우 배포가 항상 삭제되고 어셈블리를 다시 만들도록 지정합니다.

/p:DropConstraintsNotInSource={True|False}

True

업데이트를 데이터베이스에 배포할 때 데이터베이스 프로젝트에 없는 제약 조건을 대상 데이터베이스에서 삭제할지 여부를 지정합니다.

/p:DropIndexesNotInSource={True|False}

True

업데이트를 해당 데이터베이스에 배포할 때 데이터베이스 프로젝트에 없는 인덱스를 대상 데이터베이스에서 삭제할지 여부를 지정합니다.

/p:EnforceMinimalDependencies={True|False}

False

프로시저, 스칼라 함수 및 테이블 반환 함수의 본문을 구문 분석하고 해석할지 여부를 지정합니다. 이 설정을 사용하도록 설정하면 본문 내의 종속성은 식별되지 않지만 개체 정의에 대한 변경 내용은 식별됩니다. 이 옵션을 True로 설정하면 성능이 향상되지만 누락된 종속성으로 인해 배포 시 문제가 발생할 수 있습니다.

/p:GenerateDatabaseOptions={True|False}

True

배포 스크립트 데이터베이스를 배포할 때 데이터베이스 옵션을 설정할 문이 포함되도록 할 것인지 여부를 지정합니다.

/p:GenerateDeployStateChecks={True|False}

True

데이터베이스 스키마를 배포하기 전에 대상 데이터베이스의 상태를 확인하는 문이 포함된 배포 스크립트를 사용할지 여부를 지정합니다.

/p:GenerateDropsIfNotInProject={True|False}

False

해당 대상 데이터베이스에 업데이트를 배포할 때 원본 프로젝트에 없는 대상 데이터베이스의 개체 삭제 여부를 지정합니다.

/p:IgnoreAnsiNulls={True|False}

False

데이터베이스에 업데이트를 배포할 때 ANSI Nulls 설정의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreAuthorizer={True|False}

False

데이터베이스에 업데이트를 배포할 때 Authorizer의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreColumnCollation={True|False}

False

데이터베이스에 업데이트를 배포할 때 열 데이터 정렬의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreComments={True|False}

False

데이터베이스에 업데이트를 배포할 때 주석의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreCryptographicProviderFilePath={True|False}

False

데이터베이스에 업데이트를 배포할 때 암호화 공급자에 대한 파일 경로의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreDdlTriggerState={True|False}

False

데이터베이스에 업데이트를 배포할 때 DDL(데이터 정의 언어) 트리거의 활성화 또는 비활성화 상태 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreDefaultSchema={True|False}

False

데이터베이스에 업데이트를 배포할 때 기본 스키마의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreDmlTriggerOrder={True|False}

False

데이터베이스에 업데이트를 배포할 때 DML(데이터 조작 언어) 트리거의 순서 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreDmlTriggerState={True|False}

False

데이터베이스에 업데이트를 배포할 때 DML 트리거의 활성화 또는 비활성화 상태 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreExtendedProperties={True|False}

False

데이터베이스에 업데이트를 배포할 때 확장 속성의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreFilegroupPlacement={True|False}

True

데이터베이스에 업데이트를 배포할 때 파일 그룹에 있는 개체의 위치 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreFillFactor={True|False}

True

데이터베이스에 업데이트를 배포할 때 인덱스 저장소에 대한 채우기 비율의 차이를 무시할지 여부나 경고를 발생시킬지 여부를 지정합니다.

/p:IgnoreIdentitySeed={True|False}

False

데이터베이스에 업데이트를 배포할 때 ID 열에 대한 시드의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreIncrement={True|False}

False

데이터베이스에 업데이트를 배포할 때 ID 열에 대한 증가의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreIndexOptions={True|False}

False

데이터베이스에 업데이트를 배포할 때 인덱스 옵션의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreIndexPadding={True|False}

True

데이터베이스에 업데이트를 배포할 때 인덱스 패딩의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreKeywordCasing={True|False}

True

데이터베이스에 업데이트를 배포할 때 키워드의 대/소문자 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreLockHintsOnIndexes={True|False}

False

데이터베이스에 업데이트를 배포할 때 인덱스에 대한 잠금 힌트의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreLoginSids={True|False}

False

데이터베이스에 업데이트를 배포할 때 SID(보안 식별자) 번호의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreObjectPlacementOnPartitionSchema={True|False}

True

데이터베이스에 업데이트를 배포할 때 파일 그룹에 대한 분할된 테이블 또는 인덱스의 파티션 매핑 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnorePermissions={True|False}

False

데이터베이스에 업데이트를 배포할 때 사용 권한의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreQuotedIdentifiers={True|False}

False

데이터베이스에 변경 내용을 배포할 때 따옴표 붙은 식별자 설정의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreRoleMembership={True|False}

False

데이터베이스에 업데이트를 배포할 때 로그인의 역할 멤버 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreRouteLifetime={True|False}

True

데이터베이스에 업데이트를 배포할 때 SQL Server에서 라우팅 테이블의 경로가 유지되는 시간의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreSemicolonBetweenStatements={True|False}

True

데이터베이스에 업데이트를 배포할 때 Transact-SQL 문 간의 세미콜론 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreStatisticsSample={True|False}

True

데이터베이스에 업데이트를 배포할 때 CREATE STATISTICS에 사용되는 샘플의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreTableOptions={True|False}

False

데이터베이스에 업데이트를 배포할 때 테이블 옵션의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreUserSettingsObjects={True|False}

False

데이터베이스에 업데이트를 배포할 때 사용자 설정 개체의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreWhitespace={True|False}

True

데이터베이스에 업데이트를 배포할 때 공백의 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreWithNocheckOnCheckConstraints={True|False}

False

데이터베이스에 업데이트를 배포할 때 CHECK 제약 조건에 대한 WITH NOCHECK 절의 값 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IgnoreWithNocheckOnForeignKeys={True|False}

False

데이터베이스에 업데이트를 배포할 때 외래 키에 대한 WITH NOCHECK 절의 값 차이를 무시할지 아니면 업데이트할지를 지정합니다.

/p:IncludeTransactionalScripts={True|False}

False

데이터베이스에 배포할 때 가능하면 트랜잭션 문을 사용할지 여부를 지정합니다.

/p:NumericRoundAbort={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

NUMERIC_ROUNDABORT 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:PerformDatabaseBackup={True|False}

False

대상 데이터베이스 변경 전에 백업해야 하는지 여부를 지정합니다.

/p:QuotedIdentifier={True|False}

원본 모델에서 이 설정의 값을 기본값으로 지정합니다.

QUOTED_IDENTIFIER 연결 설정을 지정합니다. 이 설정은 모델에서 값을 재정의합니다.

/p:SingleUserMode={True|False}

False

업데이트하는 동안 데이터베이스를 단일 사용자 모드로 설정해야 하는지 여부를 지정합니다.

/p:SqlCommandVariablesFile=FileName

.deploymanifest 파일에서 지정한 .sqlcmdvars 파일.

배포할 때 사용할 .sqlcmdvars 파일을 지정합니다.

/p:TargetDatabase="String"

사용할 수 없음

배포할 데이터베이스의 이름을 지정합니다.

/p:TreatVerificationErrorsAsWarnings={True|False}

False

배포 확인 중 발생한 오류를 경고로 처리할지 여부를 지정합니다. 생성된 배포 계획이 대상 데이터베이스에 대해 실행되기 전에 해당 계획에 대한 검사가 수행됩니다. 계획 확인 과정에서는 인덱스와 같이 변경 작업을 수행하기 위해 반드시 삭제해야 하는 대상 전용 개체가 손실되는 등의 문제를 확인합니다. 또한 복합 프로젝트에 대한 참조로 인해 테이블 또는 뷰 등의 종속성이 있지만 대상 데이터베이스에는 이러한 종속성이 없는 경우도 확인합니다. 이 작업을 선택하여 첫 번째 오류가 발생할 때 배포를 중지하는 대신 모든 배포 문제의 전체 목록을 가져올 수 있습니다.

/p:UnmodifiableObjectWarnings={True|False}

True

예를 들어 파일 크기 또는 파일 경로가 다른 경우와 같이 개체에 수정할 수 없는 차이가 있을 때 경고를 생성할지 여부를 지정합니다.

/p:VerifyDeployment={True|False}

True

배포를 차단할 수 있는 문제가 있는 경우 배포를 중지하는 배포 전 검사를 수행할지 여부를 지정합니다. 예를 들어 데이터베이스 프로젝트에는 없고 배포 시 오류를 발생시키는 외래 키가 대상 데이터베이스에 있는 경우 배포를 중지할 수 있습니다.

명령 프롬프트에서 다음 명령을 입력하여 배포 속성의 전체 목록을 표시할 수 있습니다.

VSDBCMD /? /a:Deploy /dsp:sql /cs:" ConnectionString "

일반적인 가져오기 속성

다음 표의 속성은 개체를 가져오고 .dbschema 파일로 설정할 때만 적용됩니다.

Option

Default

참고

/p:IgnoreExtendedProperties={True|False}

False

확장된 속성을 무시하거나 가져올지 여부를 지정합니다.

/p:IgnorePermissions={True|False}

False

사용 권한을 무시하거나 가져올지 여부를 지정합니다.

참고참고
이 설정의 기본값은 스키마 가져오기 마법사를 사용하여 가져올 때의 기본값과 다릅니다.

명령 프롬프트에서 다음 명령을 입력하여 가져오기 속성의 전체 목록을 표시할 수 있습니다.

VSDBCMD /? /a:Import /dsp:sql /cs:" ConnectionString "

여러 환경 배포 샘플 명령줄

VSDBCMD를 사용하여 .dbschema 파일을 여러 대상 환경에 배포할 수 있습니다. 이 예제에서는 EnterpriseDB.dbschema를 개발, 테스트 및 프로덕션 환경에 배포합니다.

개발 환경

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Development.sqldeployment 
/p:SqlCommandVariablesFile=Development.sqlcmdvars 
/cs:"Data Source=DEV\sql2008;Integrated Security=true"

테스트 환경

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=UserTest.sqldeployment 
/p:SqlCommandVariablesFile=UserTest.sqlcmdvars 
/cs:"Data Source=USERTEST\sql2008;Integrated Security=true"

프로덕션 환경

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Production.sqldeployment 
/p:SqlCommandVariablesFile=Production.sqlcmdvars 
/cs:"Data Source=PRODUCTION\sql2008;Integrated Security=true"

각 환경에 대해 배포 구성, SQLCMD 변수 파일 및 대상 환경에 관련된 연결 문자열을 제공합니다.

모든 환경에서 배포 매니페스트를 공유합니다. 배포 매니페스트는 배포할 .dbschema 파일 이름을 포함합니다.

참고 항목

작업

방법: VSDBCMD.EXE를 사용하여 명령 프롬프트에서 데이터베이스 배포 준비

개념

데이터베이스를 빌드하여 스테이징 환경 또는 프로덕션 환경에 배포

데이터베이스 프로젝트 설정 개요

변경 기록

날짜

변경 내용

이유

2010년 7월

연결 문자열의 예를 추가했습니다. /targetmodelfile의 설명을 추가했습니다.

고객 의견

2011년 4월

BlockIncrementalDeploymentIfDataLoss의 이름을 수정하고 증분 배포 스크립트 만들기에 대한 참고를 추가했습니다.

고객 의견