Visual Studio 2010 データベース プロジェクトに基づく SQL Azure データベースを管理するための最善のアプローチに本当に苦労しています。VSDBCMD を使用してアップグレード用の diff スクリプトを作成し、SSMS で SQL Azure に対して実行するのは簡単だと思いました。ただし、「ターゲット データベース スキーマ プロバイダーを特定できませんでした。展開を続行できません」という恐ろしいメッセージが表示されます。エラー。
現時点では、SQL Azure が VSDBCMD で何かをサポートしていないか、またはその逆のいずれかを想定しており、他のアプローチを検討しています。私が現在考えているアプローチは次のとおりです。
- Azure データベース エンジン設定を使用して、SSMS から SQL Azure データベースのスクリプトを作成します。
- 手順 1 のスクリプトから一時的なローカル データベースを作成します。
- VSDBCMD を使用して、ステップ 2 のローカル データベースに対してデルタ スクリプトを作成します。
- 手順 3 のスクリプトを確認/変更します。
- SSMS で SQL Azure に対して手順 3/4 のスクリプトを実行します。
良し悪し?他のアイデアはありますか?
編集: 今日、Visual Studio 2010 SP1 に更新したところ、Microsoft.Data.Schema.Sql.dll に新しいデータベース スキーマ プロバイダーである SqlAzureDatabaseSchemaProvider があることがわかりました。しかし、この不良少年を実際にどのように使用するかは判断できません。Azure データベースに対して同じ VSDBCMD スクリプトを実行すると、次のようになります。
ソース データベース スキーマ プロバイダー Sql100DatabaseSchemaProvider をプロバイダー SqlAzureDatabaseSchemaProvider に変換できませんでした。展開を続行できません。
また、同じ結果で Sql90 プロバイダーを使用してみました。手動で dbproj ファイルを編集し、DSP プロパティを SqlAzureDatabaseSchemaProvider に変更しました。プロジェクトをリロードすると、次のようになります。
データベース スキーマ プロバイダーは、DataGenerationServices の実装を提供する必要があります。
VS 2010 SP1 でこれを試した人はいますか?