Access 2000 MDBからSQL Serverへのアクセス2010でSQL-92を確保する
-
28-10-2019 - |
質問
私の制御下にある状況により、アクセス2000 MDBに保存されるが、Access 2000、2002、2003、2007、2010のいずれかで開発されるアクセスクエリを開発する必要があります。これらのクエリはアクセスします(これらのクエリはアクセスします。リンクされたテーブルを介して)MS SQL Server DBまたはAccess 2000 .MDBファイルのいずれか。
過去には、ANSI-92互換ではないクエリまで追跡した問題がありました。これにより、[ツール]ダイアログのテーブル/クエリの[テーブル/[クエリ]タブのチェックボックスをマークすることで解決しました(2007年より古いバージョンのアクセスの下)。
これらのAccessアプリケーション.MDBSをさまざまなシステム間で移動しますが、現在、問題はありません。
しかし、私はすべての内側結合で正常に動作するクエリを開発したばかりですが、結合の1つを外側の結合に変更すると、アクセス2010の下で「無効な操作」エラーでクエリが失敗します。 ANSI-92チェックボックスがまだ設定されているかどうかを確認してください。見つかりませんでした。
現在、Access 2003以降はANSI 92構文を自動的に使用していることを知っていますが、この(むしろ特定の状況)のこれらのクエリの場合であることを確認する方法があるかどうか疑問に思いました。チェックボックスを変更したとき、すべての「いいね」クエリが「同様」クエリになったことを観察しました...
そのため、この状況では、質問はANSI 92の構文が完全に透過的であり、私の質問が失敗している理由は別のものです...
ティア、パオロ
解決
Access 2010では、SQL Serverの構文互換性の設定は以下にあります。
ファイル>オプション>オブジェクトデザイナー>クエリデザイン。
最初に、そのオプションが設定されているかどうかを確認する必要がありますか?クエリの動作が正常かどうかを確認する必要があります。
はどうかと言うと LIKE
vs ALIKE
, 、後者はAnsi-Wayで動作し、 %
と _
パターンマッチング。
SQL-89互換性モード(MS Access SQL Subset)で、 *
と ?
パターンですが、互換性をSQL-92に変更する場合は、クエリを書き換える必要があります %
と _
代わりは。
それが理由です ALIKE
導入されたため、選択した互換性レベルに関係なくANSI準拠のパターンを作成できます(したがって、SQL-92互換性モードでは、どちらも同じ動作です)。
他のヒント
ANSI 92 SQLモードをアクセスフロントエンドで設定する理由は本当にありません。
これをやりたくない理由は、SQL Serverのバックエンドとの相互作用を強化するために実際に何もしていないが、アクセスアプリケーションのものを変更するためです。つまり、アクセスフロントエンドでSQLでSQL 89ワイルドカードを使用すると、ODBCドライバーがSQLをサーバーに送信するときにSQL 92ワイルドカードに変換することになります。唯一の例外はパススルークエリですが、これらはサーバーのネイティブSQLで書かれています。