2016-12-06 155 views
2

有没有一种方法,使在Visual Studio中的SQL Server 2016数据库项目时态表?我无法找到一种方法来使这个工作。我想这可能是一个兼容性的问题,我发现的唯一方法是使在部署后脚本的表,但随后在接下来的部署,脚本生成的问题列滴。 支持Visual Studio中的SQL Server 2016数据库项目和时态表

+0

哪些Visual Studio和SSDT的版本您使用的? *确切*行为是什么?你是否说要尝试部署到现有数据库,为现有列生成DROP语句而不生成临时表?浏览临时表*是最安全的选项 –

+0

您尝试部署哪些更改? –

+0

我无法重现这一点。 SSDT已经有一个临时表的模板。修改表产生预期的模式修改语句,首先将数据复制到一个临时表,以避免数据丢失 –

回答

0

态表。为Visual Studio 2015年最新versionof SSDT已包含添加WITH (SYSTEM_VERSIONING = ON(HISTORY_TABLE=[dbo].[MyTempTable_HISTORY], DATA_CONSISTENCY_CHECK=ON))条款表创建脚本,并创建历史表中的时序表模板。

修改表生成修改的任何其它表,以避免数据丢失时产生相同的脚本 - 将数据复制到一个新的临时表,重建原始表,然后将数据复制回来。

唯一的“奇怪”的行为是历史表例如,即使是重命名重构重建,其产生sp_rename命令:

GO 
EXECUTE sp_rename @objname = N'[dbo].[MyTempTable].[Name]', @newname = N'Name1', @objtype = N'COLUMN'; 


GO 
PRINT N'Starting rebuilding table [dbo].[MyTempTable_HISTORY]...'; 


GO 
CREATE TABLE [dbo].[tmp_ms_xx_MyTempTable_HISTORY] (
+0

这是否工作,即使有“GENERATED ALWAYS AS行开始”列? – gmn

+0

做什么工作?该模板确实包含句点列,并且它们具有'GENERATED ALWAYS AS ROW START/END'子句。您可以在发布之前将其名称更改为任何您想要的内容。 –

相关问题