2016-12-06 16 views
2

Visual Studio SQL Server 2016データベースプロジェクトで一時テーブルを有効にする方法はありますか?私はこれを動作させる方法を見つけることができません。私はそれが互換性の問題かもしれないと思う、私が見つけた唯一の方法は、配備後スクリプトでテーブルを有効にすることですが、次の配備では、問題の列のドロップを生成します。Visual Studio SQL Server 2016データベースプロジェクトと一時テーブル

+0

Visual StudioとSSDTのバージョンを使用していますか? * exact *ビヘイビアとは何ですか?既存のデータベースにデプロイしようとすると、一時テーブルを生成せずに既存の列に対してDROP文が生成されると言っていますか?テンポラリテーブルを通過する*は最も安全なオプションです –

+0

あなたはどのような変更を展開しようとしましたか? –

+0

これは再現できません。 SSDTにはすでに一時テーブルのテンプレートがあります。テーブルを変更すると、予期したスキーマ変更ステートメントが生成され、データを一時的なテーブルにコピーしてデータの損失を防ぎます。 –

答えて

0

時間表は、です。 Visual Studio 2015用の最新バージョンの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 ROW START"列でも機能しますか? – gmn

+0

何が効果がありますか?テンプレートにはピリオド列があり、 'GENERATED ALWAYS AS ROW START/END'節があります。公開する前に名前を変更することができます。 –

関連する問題