Visual Studio 2013
SQL Server 2008
目标框架:.Net 3.5
我创建了一个SQL Server数据库项目,它工作正常。但是我添加了一个分区函数和分区模式[PS],并更改了我的一个表:删除聚簇主键并在新PS上添加聚集索引:
CREATE CLUSTERED INDEX [Ind_Archive_Data]
ON [Archive].[Data]([Id] ASC, [CreatedOn] ASC)
ON [RangePS] ([CreatedOn])
之后,每次重新部署项目时都会创建表[Archive]。[Data]的副本:
CREATE TABLE [Archive].[tmp_ms_xx_Data]....
INSERT INTO [Archive].[tmp_ms_xx_Data]...copy data...
DROP TABLE [Archive].[Data];
EXECUTE sp_rename N'[Archive].[tmp_ms_xx_Data]', N'Data';
即使我没有在此表中进行任何更改。更糟糕的是 - 它在一次部署期间复制了两次:第一次如上所示,第二次 - 以相同方式重新创建表并创建索引[Ind_Archive_Data]的副本。
这很糟糕,因为我的数据表可能非常大。 我运行Shema Compare:数据库有更多的对象,但我尝试部署的表 - 完全相同。
请有人解释一下这种行为,我该如何解决。
答案 0 :(得分:0)
我从dacpac文件生成部署脚本的方式如下:
sqlpackage.exe /Action:script /sourcefile:J:\path\to\My.dacpac /targetservername:localhost /targetdatabasename:ArchiveDB /v:Environment=DEV /v:Revision=1.1.0.0 /OutputPath:J:\test\ResultingScript.sql /v:ServiceUser=domain\user /v:ApiUser=domain\user /v:CsapiUser=domain\user /p:BlockOnPossibleDataLoss=True /p:IgnorePartitionSchemes=false
问题出在最后一个参数中。默认情况下,由于某种原因,它不仅是真的,而且总是检测到我的架构中的一些差异。
有关此参数的其他信息,您可以查看: