ネットで検索しても適切な情報が見つかりませんでした。Delphi 7 と BDE を使用して SQL Server 2005 に接続する従来のセットアップがあります。
現在、SQL Server 2012 への移行を計画していますが、それが機能する可能性はどのくらいありますか?
ネットで検索しても適切な情報が見つかりませんでした。Delphi 7 と BDE を使用して SQL Server 2005 に接続する従来のセットアップがあります。
現在、SQL Server 2012 への移行を計画していますが、それが機能する可能性はどのくらいありますか?
SQL Links MSSQL ドライバーを使用している場合、SQL Server 2012 をターゲットにすることはできません。SQL Server 2000 よりも新しいもので SQL Links を使用できた唯一の方法は、データベースの互換性レベルを「SQL Server 2000 (80)」に設定しておくことです。これは、SQL Server 2012 では不可能です。このバージョンで利用可能な最も古い互換性レベルは、"SQL Server 2005 (90)" です。
SQL リンクは、外部結合の "*=" 構文など、無効な SQL をサーバーに送信します。SQL Server 2005 以降用に設定されたデータベースは、この構文を受け入れません。
Delphi 7 を SQL Server 2012 で使用しており、Delphi 7 ADO データ コントロール コンポーネント (TAdoQuery、TAdoCommand など) を介して重大な問題は発生していません。ストアド プロシージャも問題なく動作し、ADO コマンド オブジェクト (TAdoCommand) を介して関数を呼び出すことができます。
SQL Server 2012 に付属する SQL Server Native Client 11.0 ODBC ドライバーを使用します。Delphi は、それを別の ODBC データ インターフェイスとして扱います。表面的には、(ADO コンポーネントと Access OLE ドライバーを介して) Delphi 7 で MS Access を使用するのとよく似ています。SQL Server 2012 のサービス パックでも問題ありません。(申し訳ありませんが、2012年にどのSPがリリースされたか正確には覚えていませんが、これらのSPの有無にかかわらず違いはなく、テストしました)。
開発の大部分は Windows 7 64 ビット OS で行われ、Windows Server 2008 および 2008R2 と同様に、両方とも 64 ビットで実行されました。Delphi でコンパイルされた実行可能ファイルを実行するために、特別な設定は必要ありませんでした(明らかにすべて 32 ビットです)。
ODBC の「エイリアス」を使用する場合は、64 ビットの ODBC DSN ではなく、必ず 32 ビットの ODBC DSN を使用してください。64 ビット ODBC アドミニストレータは、64 ビット Windows のコントロール パネル\管理ツールにあります。ここでは使用しないでください。Windows の SysWOW64: C:\Windows\SysWOW64\odbcad32.exe で、32 ビットの ODBC アドミニストレータを使用します。64 ビットの ODBC DSN は、32 ビットの DSN とは別のスペースにあります。Delphi 7 は 32 ビット アプリケーションであり、64 ビット DSN にはアクセスできません (別の API だと思います)。
SQL ステートメントのコメントにも問題があった可能性があります。行コメント(「--」)は機能しなかったと思いますが、複数行コメント(「/ ... /」)は機能しました。
BDE は Corel によって保持されていますが (今日まで Paradox ランタイムとして配布されています。ただし、エンジンは凍結されており、最新の Windows OS ではいくつかの問題があります)、SQL Server データにアクセスする必要はありません。Windows ODBC API を介して ODBC エイリアスを直接使用します (これを簡単にするために、Delphi でラッパーを作成しました)。ただし、BDE をこれらの ODBC DSN エイリアスへのインターフェイスとして引き続き使用できます。エイリアスをまったく使用しない場合 (およびソース コードに DbTables.pas への参照を含めない場合)、BDE はまったく必要ありません。DbTables.pas は、その INTIALIZATION ブロックでグローバル Sessions 変数を初期化するときに、常に BDE を初期化します。これは、DbTables.pas ソース コード ユニットの下部に表示されます。このユニットがないと、BDE は初期化または使用されません。
BDE ネイティブ (つまり Paradox) テーブルを使用する必要がある場合は、SQL Server と Paradox データ テーブル間のインターフェイスとして MS Access データベースとリンク テーブルを使用するという方法もあります。しかし、Access と BDE がうまく連携しないことがあります。
移行は長い間行われていると思いますが、他の人が同じ答えを探している場合に備えて. レガシーソフトウェアには、生き続ける習慣があります...
SQL Server 2008R2 で BDE を使用することに成功しました。特別な設定はありません。
編集: 私は今日、SQL Server 2014 でも最初の成功を収めています。限られたテストですが、これまでのところとても良いです!
グレッグ