問題タブ [msodbcsql17]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
360 参照

sql-server - MS ODBC SQL ドライバーは SQLcmd.exe をインストールしますか?

msodbcsql.msi (SQL ドライバー 17) をインストールした後、SQLcmd.exe ユーティリティが見つからないようです。MS ドキュメントによると、「ODBC ドライバーには、sqlcmd や bcp などのツールが付属しています。」</p>

https://docs.microsoft.com/en-us/sql/connect/odbc/microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

では、なぜ SQLcmd と Bcp とも呼ばれるコマンド ライン ユーティリティ用に別の msi があるのでしょうか。ドキュメントに従って SQLcmd.exe を ODBC msi と共にインストールするべきではありませんか? 私のプログラムは ODBC + SQLcmd.exe をインストールする必要があり、両方を一度にインストールすると便利です。何か案は?

0 投票する
1 に答える
87 参照

c++ - MFC ODBC RFX_Binary は、バインドされた CByteArray に疑似 Null 値を設定します。これは、DB へのシリアル化に含まれます。

RFX_LongBinary を CLongBinary 変数と共に使用して、SQL Server varbinary(max) フィールドからデータを移動しています。ただし、現在、SQL Server は 2019 バージョンにアップグレードされ、最新の ODBC ドライバー (MSODBCSQL17.dll、バージョン 17.6.1.1) が使用されています。ただし、これにより、最大 8000 バイトを書き込むことができるという問題が発生します。それより大きいと、CRecordSet::Update() 呼び出しは失敗します。

オンラインで多くのことを読んだことで、代わりに CByteArray 変数を伴う RFX_Binary を実際に使用する必要があると確信しました。それで私はそれに変更して動作させました - データベースに大量のデータを書き込むことができます。しかし...今、RFX_Binary のコードは、CFieldExchange::SetFieldNull の場合に、CByteArray の最初のバイトを 255 (value[0] = AFX_RFX_BYTE_PSEUDO_NULL) に設定します。CRecordSet::AddNew() を呼び出すときに発生します。その呼び出しの後、私の CByteArray 変数は空ではなくなり、代わりにサイズ = 1 になり、最初のバイトの値は 255 になります。CByteArray のこの最初のバイトを何か (真のペイロード データなど) で上書きすると、CRecordSet::Update() 呼び出しがデバッグ アサーションで失敗します。

これは問題です。以前にデータベースのフィールドにシリアル化/格納されたデータは、最初のバイトが 255 に設定されていないためです (CLongBinary を使用している場合)。

dbrfx.cpp:

どうすればよいですか:

  1. CLongBinary を引き続き使用し、8000 バイトを超える値を SQL Server の varbinary(max) フィールドに書き込むか、
  2. データベースに書き込まれたデータに余分なバイト (AFX_RFX_BYTE_PSEUDO_NULL == 255) が含まれているため、別のシリアル化データ形式を取得せずに CByteArray を使用しますか?

どんな助けでも大歓迎です!

0 投票する
1 に答える
102 参照

laravel - Laravel Sailを使用してubuntu 21.04でmsodbcsql17を見つける際の問題

Sail経由でDockerを使用して、laravelでSQLサーバーへの接続を設定しようとしています。

インストールガイドhttps://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-にリストされているように、msodbcdriver17を取得しようとしている方法は次のとおりです 。 for-sql-server?view=sql-server-ver15

ただし、次のエラーが発生します

E: パッケージ msodbcsql17 が見つかりません

さまざまな解決策を探しましたが、何も役に立たないようです。また、Microsoft パッケージの URL を古いバージョン、つまり 20.04 と 18.04 に切り替えてみました。しかし、同じエラーが発生します。

私はMAC M1を使用しており、docker-desktop v 3.6.0を使用しています

0 投票する
0 に答える
69 参照

php - Windows PHP 7.3 から 7.4 へのアップグレード後の極端な SQL Server ODBC パフォーマンスの低下

SQL Server 2019 データベースに対して何千もの個別の odbc_exec() SELECTS および INSERTS を実行するバッチ処理 PHP スクリプトを用意します。PHP 7.3 から 7.4 へのアップグレード後、プロセスは 7 倍遅く完了します (アップグレード前 20 分、アップグレード後 180 分)。

同様の問題/バグ レポートが見つからず、トラブルシューティングのサポートが必要です。はい、PDO を使用するか DB ストアド プロシージャに移行するために書き直す必要があるかもしれませんが、PHP 7.4 でこのスクリプトのパフォーマンスを低下させるために PHP または PHP の ODBC 拡張機能で何が変更されたかを理解したいと思います。

環境とテストに関する注意事項

  • プロセスは、比較的小さなデータベース レコードを多数マップします (大きな nvarchar フィールドなどはありません)。
  • すべての 64 ビット ソフトウェアおよびドライバー。
  • Windows 用のプリコンパイル済み PHP 7.3.32 (TS VC15) を 7.4.25 にアップグレードしました。同様に遅いPHP 8.0も試しました。
  • Windows Server 2019 Web および SQL Server (アップグレード中の変更なし)。
  • Stock PHP ODBC 拡張設定 (アップグレード中の変更なし)。
  • SQL Server 用の最近の MS ODBC ドライバー。利用可能な最新のもの(17.8.11)に更新しようとしました。