2016-10-26 9 views
-1

のVisual Studio 2013データベースプロジェクトのコピーテーブル

SQL Server 2008の

ターゲットフレームワークを展開しながら、:.NET 3.5

私はSQL Serverデータベースプロジェクトを作成し、それがうまく働きました。しかし、私は、パーティション関数とパーティションスキーマ[PS]を追加し、私のテーブルの1つを変更:クラスタ化された主キーを削除し、新しいPS上でクラスタ化インデックスを追加します。その後

CREATE CLUSTERED INDEX [Ind_Archive_Data] 
ON [Archive].[Data]([Id] ASC, [CreatedOn] ASC) 
ON [RangePS] ([CreatedOn]) 

、テーブル[アーカイブ]のコピー[

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'; 

私はこの表を変更していない場合でも、データを作成します。さらに悪いことに、1回のデプロイで2回コピーすることです。上に示したように初めて、2番目に同じ方法でテーブルを再作成し、インデックス[Ind_Archive_Data]のコピーを作成します。

私のデータテーブルは潜在的に非常に大きい可能性があるので、それは悪いです。 私はShema Compareを実行します:データベースにはもっと多くのオブジェクトがありますが、展開しようとするテーブルは絶対に同じです。

誰かが、この行動を説明し、どうすればいいのか教えてください。

+0

がわからない、それが誰かのために有用であろう場合。しかし、ちょうどの場合。 – Niobis27

答えて

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 

問題は、最後のパラメータにありました。デフォルトでは、何らかの理由でそれが真実であるだけでなく、常にスキーマの違いを検出します。これについての追加情報については

は、あなたがチェックすることができparameners:

  1. https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

  2. https://social.msdn.microsoft.com/Forums/sqlserver/en-US/01a9fbae-c143-45b1-bbdd-e1a1cddba042/sqlpackage-rebuild-the-table?forum=ssdt

関連する問題