Как сгенерировать скрипт переименования таблицы с помощью sqlpackage.exe? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть две базы данных some-db-dev и some-db-qa. Обе базы данных идентичны друг другу.

Я создал файл DACPAC для обеих баз данных. some-db-dev.dacpac и some-db-qa.dacpac соответственно (в нем содержится таблица «A» и столбец «Test». В ней также есть несколько фиктивных записей).

После этого я выполнил следующие шаги:

  1. Переименована таблица "A" в "ARenamed" из базы данных some-db-dev.

  2. Сгенерировал DACPAC для "some-db-dev" и сохранил его с именем "some-db-dev"

  3. У меня огонь ниже команды: -

    sqlpackage /a:Script /sf:"C:\Users\some.user\Desktop\some-db-dev.dacpac" /tf:"C:\Users\some.user\Desktop\some-db-qa.dacpac" /tdn:"some-db-qa" /op:"C:\Users\some.user\Desktop\diffscript.sql"

  4. Наблюдения: -

Вместо переименования таблицы, модифицированной на шаге 1. Он сгенерировал сценарий создания таблицы, как показано ниже.

`GO
PRINT N'Creating [dbo].[ARenamed]...';


GO
CREATE TABLE [dbo].[ARenamed] (
    [Id]   NCHAR (10) NULL,
    [Name] NCHAR (10) NULL,
    [Test] NCHAR (10) NULL
);`

Что-то не так с командой, которую я использую ??

Любая помощь будет ощутима.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Чтобы переименовать таблицу в SSDT, вам нужно использовать инструменты рефакторинга «щелкните правой кнопкой мыши по таблице и выполните refactor-rename».Что происходит, это добавляет запись в «RefactorLog.xml» - если у вас есть один из них, то при создании развертывания генерируется sp_rename, в противном случае вы получите то, что вы видите здесь, и затем создадите.

См .: https://the.agilesql.club/2016/09/refactoring-in-sql-server-data-tools-ssdt/

В последнем разделе «Переименование объектов» показано, как это сделать.

Ed

0 голосов
/ 20 июня 2019

Я думаю, что вам нужно будет использовать MSBuild вместо этого.Это пример того, как создать сценарий проекта против базы данных.

MsBuild.exe "PATH_TO_SQL_PROJ_FILE" ^
  /p:SqlPublishProfilePath="PATH_TO_PUBLISH_PROFILE" ^
  /p:UpdateDatabase=False ^
  /t:Build,Publish
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...