web-dev-qa-db-ja.com

SQLスクリプトが特定のSQL Serverバージョンと互換性があることを簡単に検証する方法はありますか?

現在、さまざまなSQL環境で動作する必要があるプロジェクトに取り組んでいます。ほとんどの開発者はSQL Server 2017を使用しています。アプリケーションはSQL Azureで実行され、クライアントは最近、SQL Server 2016を使用していくつかの環境を実行し始めました。プロジェクトはSSDTを使用して、開発目的で正常に機能するDacpacファイルを生成していますが、最近実行しましたこの関数を参照するストアドプロシージャスクリプトは、開発環境とAzure環境では正常に機能し、2016環境では失敗しました。

サポートするSQL Serverのバージョンごとに複数のテスト環境を作成しなくても、任意のSQL Serverのバージョンに対してスクリプトを検証する簡単な方法はありますか?この方法は100%完全である必要はありませんが、潜在的な互換性の問題の大部分をキャッチする必要があります。

9
Joe Brinkman

私が知っている簡単なツールや既存のスクリプトはありません。特定のバージョンで追加された(または特定の互換性レベルによって有効にされた)関数の使用のスキャンに関しては、MSのドキュメントを使用して何かを記述できますが、ストアドプロシージャやその他の用途でアドホックSQLを介した呼び出しをキャッチできない可能性がありますそのパターンは何にでも当てはまり、文書化されていない関数への変更をカバーするには、さらに調査を行う必要があります。

サポートするSQL Serverのバージョンごとに複数のテスト環境を作成する必要はありませんか?

それ以降のすべてのバージョンに対してテストするのではなく、サポートする必要がある最小バージョンに対してテストすることは受け入れられませんか?これは、CI /テスト/その他のプロセスに追加する必要があるインスタンスが1つ増えるだけです。 2016sp1がサポートする必要がある最も古いバージョンである場合、すべてのエディションでほぼすべてが利用できるため、Expressを使用でき、その1つのインスタンスのライセンス費用さえもかかりません。 2016sp1より前の標準/エンタープライズのみの機能を使用しない場合は、以前のバージョンでもそれで済む可能性があります。

9
David Spillett