この質問は「なぜ」に関するものです。接続文字列にDRIVER={SQL Server Native Client 11.0}
を指定すると、varchar(max)
の列は空白で返されます。この問題は長年にわたり続くようであり、いくつかの回避策が存在します。ドライバ{SQL SERVER}とネイティブクライアントの相違点は何ですか?
これらの問題は依然として存在し、によって提案された有効な回避策、というクレイジー思えますが:
https://stackoverflow.com/a/33883901/4258124
が使用する接続文字列を変更することです:
DRIVER={SQL Server}...(rest of connection string)
の代わり:
DRIVER={SQL Server Native Client 11.0} ...(rest of connection string)
私はこれを試してみた、それは動作しますが、私の質問は、「なぜ」についての詳細です。 DRIVER={SQL SERVER}
が古いドライバの場合、MultiSubnetFailover = Yes/Trueのような新しい機能を渡すとどのように接続できますか?
odbcad32.exe>ドライバからの「windows」(MSDEBCSQL11.DLL、2014年のMSODBCSQL11.DLL)と「SQL Server」(SQLSRV32.DLL 2010年)がインストールされていることがわかりました。
WindowsでのVBAまたはPythonでは、上記の2つのうち新しい方を選択すると{SQL Server}
が渡されますか? {SQL Server Native Client 11.0}
より{SQL Server}
を使用して機能が失われる可能性はありますか?そうであれば、どうなりますか?より良い回避策がありますか?
'DRIVER = {SQL Server用ODBCドライバ11}'を使ってみましたか?インストールされており、SQL Serverネイティブクライアント11.0(SQLNCLI11.DLL、2012年頃以降)より新しいものであると思われるようです。 –
また、 'pyodbc.version'が '4.0.3'を返すことを確認してください。この問題に対処する可能性のあるpyodbcにはかなり最近の変更がいくつかあります。 –
ありがとう、私はDRIVER = {ODBC Driver 11 for SQL Server}を試しました。新しいものは最新の機能を考慮に入れて意味があるので、違いが何であるか心配する必要はありません。まだ興味がありますが、私はおそらくそれをhahaにしましょう。 – NikT