如何使用sqlpackage.exe生成重命名表的脚本?

时间:2019-06-19 11:06:06

标签: sql sql-server sql-server-data-tools sql-scripts sqlpackage

我有两个数据库some-db-dev和some-db-qa。这两个数据库彼此相同。

我为两个数据库都创建了DACPAC文件。分别是some-db-dev.dacpac和some-db-qa.dacpac。(其中表为“ A”,列为“ Test”。表中还包含一些虚拟记录。)

此后,我执行了以下步骤:

  1. 从some-db-dev数据库中将表“ A”重命名为“ ARenamed”。

  2. 生成了“ some-db-dev”的DACPAC并将其存储为名称“ 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 :(得分:0)

我认为您需要改用require '../vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(TRUE); $spreadsheet = $reader->load(strip_tags($your_file)); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $highestColumn = $worksheet->getHighestColumn(); $sheetData = $worksheet->rangeToArray( 'A2:' . $highestColumn . $highestRow, NULL,TRUE,FALSE ); print_r($sheetData); 。这是一个如何生成脚本项目与数据库的示例。

MSBuild

答案 1 :(得分:0)

要在SSDT中重命名表,您需要使用重构工具“右键单击表并进行重构重命名”。这会发生什么情况,这会在“ RefactorLog.xml”中添加一个条目-如果您有一个条目,那么在创建部署时会生成sp_rename,其他人将获得此处看到的内容,然后创建。

请参阅:https://the.agilesql.club/2016/09/refactoring-in-sql-server-data-tools-ssdt/

最后一部分“重命名对象”显示了如何做到这一点。

Ed