Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在升级数据库时,是否有导致SqlPackage.exe执行数据移动(表格重新创建)的完整列表?_Sql Server_Sql Server Data Tools_Dacpac - Fatal编程技术网

Sql server 在升级数据库时,是否有导致SqlPackage.exe执行数据移动(表格重新创建)的完整列表?

Sql server 在升级数据库时,是否有导致SqlPackage.exe执行数据移动(表格重新创建)的完整列表?,sql-server,sql-server-data-tools,dacpac,Sql Server,Sql Server Data Tools,Dacpac,当SSDT可能会生成代码来迁移表数据时,即使用所需的最终模式创建一个新的临时表,将数据从原始表移动到新表中,删除原始表,然后重命名临时表以匹配原始表的名称 脚本中的代码可以在语句PRINT N'Starting rebuilding table'之后找到 我想这样做的大部分原因都是因为没有原子DDL语句来生成升级所需的更改。我为另一个类似的工具找到了一个这样的案例。然而,我试图找到一些关于SSDT何时将执行数据迁移/表重新创建的文档,因为我已经看到了一些情况,在这些情况下,DDL可以用来完成这项

当SSDT可能会生成代码来迁移表数据时,即使用所需的最终模式创建一个新的临时表,将数据从原始表移动到新表中,删除原始表,然后重命名临时表以匹配原始表的名称

脚本中的代码可以在语句
PRINT N'Starting rebuilding table'之后找到

我想这样做的大部分原因都是因为没有原子DDL语句来生成升级所需的更改。我为另一个类似的工具找到了一个这样的案例。然而,我试图找到一些关于SSDT何时将执行数据迁移/表重新创建的文档,因为我已经看到了一些情况,在这些情况下,DDL可以用来完成这项工作,但SSDT仍然会重新创建表(例如,在更改聚集索引时)


我的问题是:SSDT何时会生成数据迁移/表重新创建的代码,是否有任何地方记录在案?

没有,不幸的是,没有记录在案。在SSDT中实现忽略列顺序功能时,我有机会回顾了表数据移动场景。即使提供了源代码,也很难生成导致表数据移动的情况的完整列表,因为它被视为意外情况或未处理情况的“安全”回退。

如果您希望更多地控制数据移动的发生方式,Flyway或Redgate Deploy可能是一个不错的选择。Redgate Deploy与SSDT基于状态的方法不同,它预先生成脚本,并将这些脚本作为第一类部署工件包含在VisualStudio项目中。这意味着您可以检查脚本,关键是,如果您认为它没有选择最佳方法,可以修改脚本

可以找到有关Redgate部署的更多信息