2016-11-18 6 views
2

私は、SQL Server Enterprise Edition機能(データ圧縮など)を使用するVSにSSDTプロジェクトをセットアップしました。localdbに対してSQL Serverのエンタープライズ機能を使用するSSDTプロジェクトを単体テストする方法を教えてください。

このプロジェクトをlocaldbにデプロイして、CIデータベースにデプロイする前にデータベースに対してローカルでユニットテストを実行できるようにしたいと考えています。ただし、localdbは、データ圧縮をサポートしていないSQL Server Express Editionのインスタンスです。

私が展開しようとしたときに私が取得エラーは次のとおりです。

SQL72014の.Net SqlClientデータプロバイダ: オブジェクトのFooTable 'の圧縮を有効にすることはできません。 SQL Server Enterprise Editionのみが 圧縮をサポートします。

可能性の溶液#1:localdbに展開するときに実行されていないPost Deploy Script、にすべてのデータ圧縮SQLをシフト。これは、オプションがソース管理で非表示になり、スキーマ比較などで表示されないので理想的ではありません。

潜在的な解決策2:問題のSQLをSQLCMD Variableに置き換えます。 $(WithPageCompression)localdbに展開すると空の値を持ち、実際のデータベースにデプロイすると値WITH (DATA_COMPRESSION = PAGE)になります。これは上記の改善ですが、より多くのオプションがWITH内に設定されるにつれて扱いにくくなります。

潜在的なソリューション#3:各開発者マシンにSQL Serverのローカルインスタンスをインストールします。 Developer Editionがその仕事をしてくれるように見えます(今は無料です)。これがベストソリューションかもしれないし、他のメリットがあるように見えますが、これを組織のインフラストラクチャにインストールし、構成し、維持するオーバーヘッドが原因です。

その他のオプションはありますか?

ありがとうございました

+2

[SQL Server 2016 SP1のlocaldbは、このようなもののほとんどをサポートしています。](https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-rele/) –

+0

Aha。Visual StudioでSSDTバージョンをアップグレードすると、バンドルされたlocaldbが2014から2016にアップグレードされますか?または、Visual Studio 2017を待つ必要がありますか? – Taran

+0

私は答えを提出しなかった理由がわかりません。 SSDTの次のリリース(Visual Studioではなく)を待たなければならないのか、スタンドアロンのSQL Server 2016 SP1 localdbをインストールして動作させることができるのかどうかはわかりません。 –

答えて

3

release of SQL Server 2016 SP1では、ほとんどの機能がすべてのエディションで使用できるようになりました。 LocalDBの設計上、いくつかの制限があります(通常のExpressエディションよりも軽量で、FileGroups/FileStreamはこの理由でサポートされていません)が、これを試してみる価値はあります。

ExpressまたはLocalDB from hereをダウンロードできます。 LocalDBはSSDT 17.0 RC releaseでも利用できます。これは現在、リリース候補モードになっていますので、実動シナリオではまだ推奨されていません。

1

SQL Server Expressに対して「深刻」なものは何もテストしたくありません。私は炎戦に従事する時間がありませんが、エクスプレスは無料です(あなたが支払うものを手に入れてください... ')あなたと一致するバージョンのSQL Serverに対してテストする方法または、非互換性を発見して修正するのに過度の時間を費やすことになります。ハードウェアは必ずしも一致する必要はありませんが、テストとプロダクションの間でソフトウェアを可能な限り一致させる必要があります。

なぜExpressがインストールされている開発者用エディションをインストールできないのですか?

+0

私が言及している明示的なインスタンスは、実際には、各開発者マシン上のVisual Studioにバンドルされた 'localdb'インスタンスです。 Developer Editionを各ユーザーのマシンにインストールすることを検討していますが、私が働いている組織にはソフトウェアの厳格な承認プロセスがあり、これは苦しいものです。また、それは理想的ではない新しい開発者の障壁を引き上げる。しかし、理想的には、すべてのテスト(ローカルでさえ)は、プロダクションのような環境に対して実行されるべきです。 – Taran

関連する問題