2016-10-06 4 views
2

SSDTは比較処理中に変更を検出しても、列COLLATIONを公開していないようです。SSDTは列の変更を公開しません

表内の特定の列の列COLLATIONを変更して変更を公開しようとすると、発行スクリプトを作成するときにSSDTが無視します。

これは、古くから検出された、まだ再生されているmsdn forumsに記載されている同様の問題です。

私はSSDTバージョン14.0.60629.0を使用しています SSDTにはまだこの問題がありますか、または有効な回避策がありますか?


更新 この問題は、ユーザー定義のデータ型を使用している列のためです。
更新 (追加の手順が再現する、と質問文を修正):再現する

手順:データベースと

1.と(これは、私が持っているものです照合
の点に注意してください。私のDevサーバ上のDB):

現在の照合の設定は次のとおりです。

  • サーバー
    順序SQL_Latin1_General_CP1_CI_AS
  • データベース
    順序SQL_Latin1_General_CP1_CI_AS

  • 順序SQL_Latin1_General_CP1_CI_AS
  • ユーザー定義データ型(varchar型AS dt_Source(20))
    順序SQL_Latin1_General_CP1_CI_AS
  • 列(dt_source AS出所)
    順序SQL_Latin1_General_CP1_CI_AS

2.Then変更データベースの照合。

USE master; 
ALTER DATABASE [<db_name>] COLLATE SQL_Latin1_General_CP1250_CS_AS 



新しい照合設定は次のようになります。

  • サーバー
    順序SQL_Latin1_General_CP1_CI_AS
  • データベース
    SQL_Latin1_General_CP1250_CS_AS

  • SQL_Latin1_General_CP1250_CS_AS
  • varchar型ASユーザー定義データ型(dt_Source( 20))
    SQL_Latin1_General_CP1250_CS_AS
  • は、カラム(dt_source AS出所)
    順序SQL_Latin1_General_CP1_CI_AS

前の列の照合順序(順序SQL_Latin1_General_CP1_CI_AS)が残り、SSDTはメカニズムがどんな変化を検出することができません比較します。

これは、比較からのパブリッシュスクリプトが真の照合順序を知らずにビルドされたため、別の表の別の列にある別の表を参照して、この列に外部キー制約を作成しようとすると、 。 (タブ:一般)

ALTER TABLE [FCT].[Inventory] WITH NOCHECK 
ADD CONSTRAINT [FK_Inventory_Source] FOREIGN KEY ([Source]) REFERENCES [DIM].[Source] ([SourceCode]); 
+0

最新バージョンのSSを使用して説明した動作を再現できませんでしたDTと14.0.60629.0以降のこのエリアにはバグ修正はありませんでした(私はチームにいる)。 「列照合の無視」公開オプションが選択されていないことを確認しましたか?もしそうなら、この動作を示すサンプルの表スキーマ(前後)を提供できますか? –

+0

私は質問を更新し、再現するステップを追加しました。また、これは、ユーザー定義データ型を使用する列でのみ発生することに注意してください。 – Milan

答えて

1

がパブリッシュ設定で「スクリプトのデータベースの照合順序を」ENABLEていることを確認してください:
ソース:https://dba.stackexchange.com/questions/128002/ssdt-publish-window-what-does-checkbox-enable-mean

列照合順序が異なるため例については、
が、これは、エラーを生成します

複数の出版物を受け取る可能性があります
最初にdbレベル、後でテーブル/カラムレベル

関連する問題