さまざまなSQLデータベースにわたって互換性のあるDDL(作成テーブルを作成)?
-
12-10-2019 - |
質問
(現在)MS AccessとSQL Serverのバックエンドをサポートする必要があるデスクトップアプリケーションに取り組んでいます。アプリケーションは絶え間ない開発中であり、データベースに変更が頻繁に行われます。これは、主にテーブルとビューを追加して新しい機能をサポートするためのビュー(いくつかのドロップとテーブルを変更して新しい列を追加します)です。
DDLを実行可能ファイルにコンパイルするシステムがあり、データベースをチェックして、実行可能ファイルに実行する必要がある新しいDDLがあるかどうかを確認し、実行します。これは、単一のデータベースで正常に機能します。
私の当面の問題は、SQL ServerとAccessがデータ型の異なる名前を大きくサポートしているため、アクセスに対して実行されるテーブルステートメントの作成はSQL Serverに対して実行されないことです(または、さらに悪いことに、異なるデータタイプでテーブルを実行します)。
プロバイダーごとに個別のDDLを作成することなく、これらの両方のデータベースに対してADOを介して実行できるDDL(特にテーブルコマンドの作成)を作成するために使用できる方法はありますか?
解決
あなたはすでにADOを使用しているので、あなたは調べるべきです Microsoft Adox
これにより、基礎となるデータソースタイプに依存しないADOオブジェクトモデルを使用して、データソースの構造を操作できます。 IEは、明示的なDDLに頼らない
ADOXのサポートは、特定のADOプロバイダーによって保証されておらず、ADOXサポートのレベルは利用可能であっても異なる場合があります。しかし、MS AccessとMS SQL Serverの場合、必要なすべての機能を見つけると思います(そしておそらくそれ以上です!)
他のヒント
これは、DELPHIのDBXを使用して実行できます。
以下は、これがどのように行われるかを示すサンプルコードへのリンクです。http://cc.embarcadero.com/item/26210
同じ問題がありました。実行する前に、C PreproccessをSQLに適用することを解決しました。プリプロセッサには、異なるDBを処理するためのマクロが含まれています。
ステファノ