none
SQL Server Native ClientのODBC廃止予定でMSOLEDBに移行する方法について RRS feed

  • 質問

  • データベースへのODBC接続が非推奨になり、MSOLEDBでの実装が推奨されていると思います

    (過去には非推奨にした機能の非推奨取消があったので動向見守りな方も多いとは思いますが)

    既存の安定稼働していて、今後も数十年は使われる見込みのシステムの移行をしなければならないのかなぁと考えています。

    しかしODBC接続とMSOLEDB接続は実装が結構変わるので、

    DB接続全ヶ所で直接DBオブジェクトを使っている大きなシステムがあって

    修正箇所が膨大で、簡単に移行できる方法はないものかなぁと思っています。

    ※似たようなDBオブジェクトをクラスで自作すればいいのかもしれませんけど。

    ODBCからMSOLEDBへの手堅い便利な移行方法などご存じの方はいらっしゃいませんでしょうか。



    2021年10月4日 1:35

回答

  • 念のための補足となりますが、「Microsoft ODBC Driver for SQL Server」は、使用が推奨されているドライバとなります。
    そのため、現状 ODBC を使用されているのであれば、Microsoft ODBC Driver for SQL Server へ移行されたほうが、スムーズかと思いました。
    既存のアプリケーションで 「Microsoft ODBC Driver for SQL Server」を使用した場合、Azure SQL Database に接続ができなかったとのことですが、「Microsoft ODBC Driver for SQL Server」から Azure SQL Database への接続はサポートされておりますので、接続ができない現象は、設定に間違いがなかった (AP:接続文字列、SQLDB:ファイアウォール設定)のであれば、一時的な Azure SQL Database 側の問題だったことなどが推測されます。

    Microsoft ODBC Driver for SQL Server on Windows
    + Microsoft ODBC Driver for SQL Server を使用して、新しいアプリケーションを作成できます。 現在古いバージョンの ODBC ドライバーを使用している古いバージョンのアプリケーションをアップグレードすることもできます。 ODBC Driver for SQL Server を使用すると、Azure SQL Database、Azure Synapse Analytics、SQL Server に接続できます。

    上記について認識されたうえで 既存環境でご使用されている 古い ODBC ドライバ から 「OLE DB Driver for SQL Server」への移行を検討されているのであれば問題ないかと思います。
    しかしながら、「Microsoft ODBC Driver for SQL Server」 が非推奨だと誤って認識されているのであれば、もう一度 移行方式を検討されてもよいかもしれません。



    2021年10月5日 3:35

すべての返信

  • 話が逆なのか前世紀の話をしているのか、どちらにせよ古いのでは、、、
    1996年 oledb出来ました。ODBCよりこっちの方がいいぜ
    2011年、oledbdriver for SQL Serverは止めて、ODBC一本にするわ。
    2017年、oledbdriver for SQLServerやっぱり止めません。

    jzkey

    2021年10月4日 2:07
  • ODBC非推奨のことを指しています。

    ご指摘の2017年の記事で、ODBC・SQL Server Native Clientが非推奨になったんじゃないんですか?

    https://docs.microsoft.com/ja-jp/sql/connect/connect-history?view=sql-server-ver15


    2021年10月4日 2:31
  • ODBCについて、たしかにSQLODBC(OS付属), SQL Server Native Client( SQL Server 2005 - 2012) は非推奨ですが 、それは2017年のoledb drivet復活に伴って決まったわけではないですね。ODBC Driver for SQL Serverを使え、という意味でしょう。
    なんでそこで、OLE DB Driver for SQL Serverに移行しようという話になるのでしょうかね、、?

    jzkey

    2021年10月4日 2:58
  • 私の記憶では、OLE DB (SQL Server Native Client : SNAC) が非推奨となり、新機能は Microsoft SQL Server for ODBC Driver のみに追加していくという発表がされましたが、リンク サーバー機能など OLE DB に依存している機能があり、OLE DB Driver for SQL Server として今後も新機能を追加していくという方向転換が 2017年にあったとおもいます。
    そのため、現時点においては、以下の何れのドライバもサポートされており、新機能の取り込みも行われているため、特に要件がなければ、OLE DB Driver for SQL Server に移行しなければならないということはなく、Microsoft SQL Server for ODBC Driver を選択されても問題ないかと思います。

    ・Microsoft SQL Server for ODBC Driver 

    ・OLE DB Driver for SQL Server

    2021年10月4日 4:40
  • MSOLEDBに移行対応している理由は2点あります。

    ①以前オンライン勉強会に参加して、移行したほうが良いんだろうなぁと感じたのと、

    https://sqlserver.connpass.com/event/212202/

    ②Windows 11評価版に弊社で管理しているODBC接続のアプリケーション数十個を動作確認したところ、

    1システムだけODBCでAzure SQL databaseに接続できませんでした。原因不明です。ほぼ同じ作りのシステムが動くのに、DB接続できませんでした。

    これはMSOLEDB接続に修正して正常に動くようになりました。

    よって、非推奨となったODBC接続のシステムを使い続けるのはリスクが高く、

    良きタイミングで全てMSOLEDBに移行することにしました。

    Windows Updateで突然使えなくなることってマイクロソフト製品でよくあることですし。

    ODBC→MSOLEDB対応をしているユーザー様の書き込みお待ちしてます😉

    2021年10月4日 5:15
  • 念のための補足となりますが、「Microsoft ODBC Driver for SQL Server」は、使用が推奨されているドライバとなります。
    そのため、現状 ODBC を使用されているのであれば、Microsoft ODBC Driver for SQL Server へ移行されたほうが、スムーズかと思いました。
    既存のアプリケーションで 「Microsoft ODBC Driver for SQL Server」を使用した場合、Azure SQL Database に接続ができなかったとのことですが、「Microsoft ODBC Driver for SQL Server」から Azure SQL Database への接続はサポートされておりますので、接続ができない現象は、設定に間違いがなかった (AP:接続文字列、SQLDB:ファイアウォール設定)のであれば、一時的な Azure SQL Database 側の問題だったことなどが推測されます。

    Microsoft ODBC Driver for SQL Server on Windows
    + Microsoft ODBC Driver for SQL Server を使用して、新しいアプリケーションを作成できます。 現在古いバージョンの ODBC ドライバーを使用している古いバージョンのアプリケーションをアップグレードすることもできます。 ODBC Driver for SQL Server を使用すると、Azure SQL Database、Azure Synapse Analytics、SQL Server に接続できます。

    上記について認識されたうえで 既存環境でご使用されている 古い ODBC ドライバ から 「OLE DB Driver for SQL Server」への移行を検討されているのであれば問題ないかと思います。
    しかしながら、「Microsoft ODBC Driver for SQL Server」 が非推奨だと誤って認識されているのであれば、もう一度 移行方式を検討されてもよいかもしれません。



    2021年10月5日 3:35
  • ご返信ありがとうございます。

    知識不足で申し訳ありません。ODBCはSQL Server Native Clientしか無いと思っていました。

    (元々使っていたDBがAzureではなくOracleやDB2などベンダー極力依存無しシステムだったせいかもしれません

    現在はSQL Server Native Client を使用しており、

    これは間違いなく非推奨ですよね。

    で、 以下のMSページにもある通り、

    https://docs.microsoft.com/ja-jp/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-ver15

    Microsoft OLE DB Driver for SQL Server  を使用せよ、とのことなので移行しようと思っていたのですが、

    NOBTA-MVP様のご指摘の、今後も使用できるODBCに移行したほうがスムーズということですね、

    これは全く考えが至りませんでした。

    ありがとうございます。

    2021年10月5日 3:51