Поделиться через


Справочник по командной строке для VSDBCMD.EXE (развертывание и импорт схемы)

Можно использовать VSDBCMD.EXE для:

  • Импорт схемы базы данных из действующей базы данных в файл с расширением DBSCHEMA

  • Создайте скрипт развертывания из файла с расширением DBSCHEMA

  • Создайте скрипт развертывания из файла DBSCHEMA и разверните его в целевой базе данных

  • Формирование скрипта развертывания путем сравнения двух DBSCHEMA-файлов.

Кроме того, можно указать параметры для настройки способа развертывания или импорта базы данных.

Дополнительные сведения об использовании этого инструмента см. в разделах Практическое руководство. Подготовка базы данных к развертыванию из командной строки с помощью программы VSDBCMD.EXE и Практическое руководство. Импорт схемы из командной строки.

Важно!

Программу VSDBCMD.EXE нельзя использовать для развертывания проекта компонента приложений уровня данных (DAC) или для импорта схемы в проект DAC.

Общие параметры

Параметры в следующей таблице применяются к действиям "Развернуть" и "Импортировать".

Параметр

Краткая форма

Обязательный?

Примечания

/Action:{Import|Deploy}

/a:{Import|Deploy}

Да

Указывает, требуется ли импортировать объекты и параметры в файл с расширением DBSCHEMA и требуется ли развернуть файл с расширением DBSCHEMA на целевом сервере или в целевой базе данных.

/ConnectionString:"строка"

/cs:"строка"

Нет

Задает строку подключения к целевой базе данных. Например, можно указать /cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008". Чтобы импортировать схему, необходимо задать имя базы данных с помощью Initial Catalog. Дополнительные сведения о синтаксисе строки подключения см. в разделе Синтаксис строки подключения (ADO.NET).

/DatabaseSchemaProvider:имя_DSP

/dsp:имя_DSP

Да

Задает тип поставщика схемы базы данных, к которому производится подключение. Например, используйте /dsp:SQL для SQL Server.

@File

Недоступно

Нет

Можно указать файл ответов, содержащий один или несколько параметров командной строки.

/Quiet[+|-]

/q

Нет

Указывает, следует ли отключать подробную обратную связь с VSDBCMD.

/DeployToDatabase[+|-]

/dd

Нет

Указывает, что планируется создавать скрипт развертывания и разворачивать его в целевой базе данных. Если этот параметр не задан, то создается скрипт развертывания, но этот скрипт не развертывается.

/ModelFile:имя_файла

/model:имя_файла

Нет

Задает имя файла с расширением DBSCHEMA, который планируется разворачивать или который планируется создать при импорте схемы. Это не обязательно, если указать манифест развертывания.

/Properties:имя_свойства=значение_свойства

/p:имя_свойства=значение_свойства

Нет

Задает имя свойства и значение, которое планируется переопределить в командной строке. Свойства, характерные для этих действий, см. в параметрах развертывания и в параметрах импорта.

Параметры развертывания

Параметры в следующей таблице применяются только при развертывании файла с расширением DBSCHEMA.

Параметр

Краткая форма

Обязательный?

Примечания

/ManifestFile:имя_файла

/manifest:имя_файла

Нет

Задает файл манифеста развертывания, который будет использоваться при развертывании базы данных. При построении проекта базы данных в выходном пути построения создается манифест развертывания.

ПримечаниеПримечание
Развертывание завершится со сбоем, если файл манифеста развертывания ссылается на выходной файл скрипта, который уже существует и доступен только для чтения.

/DeploymentScriptFile:имя_файла

/script:имя_файла

Нет

Задает имя, которое планируется дать скрипту развертывания.

/ExtensionArguments

/ext:строка

Нет

Задает пары "имя-значение" для параметров, которые передаются участникам настраиваемого развертывания.

/TargetModelFile: имя_файла

/targetmodel: имя_файла

Нет

Определяет целевой файл .dbschema, который требуется сравнить с исходным файлом .dbschema. Используйте этот параметр, когда требуется создать скрипт развертывания путем сравнения двух DBSCHEMA-файлов. Дополнительные сведения см. в разделе Сравнение схем с помощью программы VSDBCMD.EXE.

Примечание

При создании скрипта инкрементного развертывания имена исходной и конечной баз данных должны соответствовать.

Переопределение отдельных переменных SQLCMD в командной строке

Чтобы переопределить значение отдельной переменной SQLCMD, можно использовать следующий синтаксис:

/p: имя_переменной_SqlCmd = значение

Если указать имя переменной, которая не была объявлена в файле с расширением SQLCMDVARS, то произойдет ошибка.

Указать переменные SQLCMD можно в трех точках, применяемых в следующем порядке:

  1. Во время разработки, в файле Database.sqlcmdvars, на который ссылается манифест развертывания

  2. В командной строке путем указания /p:SqlCommandVariablesFile=путь_к_файлу

  3. В командной строке путем указания конкретного имени переменной и значения

Второй метод переопределяет первый, а третий метод переопределяет первый и второй.

Общие свойства развертывания

При развертывании файла DBSCHEMA в командной строке можно задать свойства из следующей таблицы.

Параметр

Значение по умолчанию

Примечания

/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" можно развернуть схему без появления ошибок данных, вызванных проверочным ограничением или ограничением внешнего ключа в середине процесса развертывания, откладывая проверки данных в конец скрипта развертывания.

/p:CollationPreference={UseSourceModelCollation | UseTargetModelCollation }

UseSourceModelCollation

Задает параметры сортировки, используемые при сравнение исходной и целевой моделей.

/p:CommentOutSetVarDeclarations={True|False}

False

Указывает, требуется ли закомментировать в скрипте развертывания операторы SETVAR, задающие значения переменных. Это свойство можно установить в значение "true", если планируется использовать SQLCMD для развертывания скрипта и значения для этих переменных будут указываться в командной строке.

/p:ConcatNullYieldsNull={True|False}

По умолчанию принимает значение этого параметра в исходной модели

Задает параметр подключения CONCAT_NULL_YIELDS_NULL. Этот параметр замещает значение из модели.

/p:DeployDatabaseProperties={True|False}

True

Указывает, должны ли свойства базы данных задаваться или обновляться как часть скрипта развертывания.

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

DontChangeCollations

Этот параметр определяет способ обработки параметров сортировки базы данных в процессе развертывания. Существует три возможных значения: UseSourceModelCollation указывает, что параметры сортировки целевой базы данных будут обновлены, если не соответствуют параметрам сортировки, заданным источником. UseTargetModelCollation указывает, следует ли использовать параметры сортировки целевой базы данных (или сервера). DontChangeCollations указывает, что параметры сортировки сервера не должны изменяться.

/p:DeploymentConfigurationFile=имя_файла

Файл с расширением SQLDEPLOYMENT, указанный в файле с расширением DEPLOYMANIFEST.

Задает файл с расширением 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, или они будут обновляться при развертывании обновлений в базе данных.

/p:IgnoreAuthorizer={True|False}

False

Определяет, будут ли игнорироваться различия в механизме авторизации, или они будут обновляться при развертывании обновлений в базе данных.

/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

Определяет, будут ли игнорироваться различия начального значения для столбца идентификаторов, или они будут обновляться при развертывании обновлений в базе данных.

/p:IgnoreIncrement={True|False}

False

Определяет, будут ли игнорироваться различия приращения для столбца идентификаторов, или они будут обновляться при развертывании обновлений в базе данных.

/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

Определяет, будут ли игнорироваться различия идентификаторов безопасности, или они будут обновляться при развертывании обновлений в базе данных.

/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

Определяет, будут ли игнорироваться различия в значении предложения 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=имя_файла

Файл с расширением SQLCMDVARS, указанный в файле с расширением DEPLOYMANIFEST.

Задает файл с расширением SQLCMDVARS, который планируется использовать при развертывании.

/p:TargetDatabase="строка"

Недоступно

Задает имя базы данных, в которой планируется выполнить развертывание.

/p:TreatVerificationErrorsAsWarnings={True|False}

False

Определяет, должны ли ошибки, которые возникают в ходе проверки развертывания, обрабатываться как предупреждения. Проверка выполняется для созданного плана развертывания перед выполнением плана в целевой базе данных. Проверка плана обнаруживает проблемы, такие как потеря объектов, которые существуют только в целевом объекте, например индексов, которые должны быть отброшены при внесении изменений. Проверка также обнаруживает такие случаи, когда зависимости, например таблица или представление, существуют вследствие ссылки на составной проект, но не существуют в целевой базе данных. Вы можете задать значение True, чтобы получить полный список всех проблем развертывания, вместо того чтобы развертывание было остановлено на первой ошибке.

/p:UnmodifiableObjectWarnings={True|False}

True

Определяет, будут ли создаваться предупреждения при обнаружении различий в объектах, которые нельзя изменить, например, если различается размер или путь к файлу.

/p:VerifyDeployment={True|False}

True

Определяет, будут ли выполняться проверки перед развертыванием, которые остановят развертывание, если есть проблемы, препятствующие успешному развертыванию. Например, развертывание может быть остановлено, если в целевой базе данных есть внешние ключи, которые отсутствуют в проекте базы данных и которые приведут к ошибкам при развертывании.

Можно отобразить полный список свойств развертывания, введя в командной строке следующую команду:

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

Общие свойства импорта

Свойства, приведенные в следующей таблице, применяются только при импорте объектов и параметров в файл с расширением DBSCHEMA.

Параметр

По умолчанию

Примечания

/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

Добавлен пример строки подключения. Добавлено описание параметра /targetmodelfile.

Обратная связь от клиента.

Апрель 2011

Исправлено имя BlockIncrementalDeploymentIfDataLoss и добавлено примечание о создании скриптов добавочного развертывания.

Обратная связь от клиента.