ネイティブ クライアント エラー「別のコマンドの結果で接続がビジーです」を修正する方法は?
-
09-06-2019 - |
質問
をもらっています Connection Busy With Results From Another Command
SSIS パッケージの実行中に SQLServer Native Client ドライバーからエラーが発生する。SQLServer 2000 と通信する場合のみ。SQLServer 2005 と通信する別の部分は常に正常に動作しているようです。何かご意見は?
解決
Microsoft KB 記事 822668 ここに関連します:
修理:リンク サーバー クエリを実行すると、「別のコマンドの結果で接続がビジーです」というエラー メッセージが表示される
症状
負荷の高い状態では、リンク サーバー アクティビティを実行すると、次のエラー メッセージが表示される場合があります。
Server: Msg 7399, Level 16, State 1, Procedure <storedProcedureName>, Line 18 OLE DB provider 'SQLOLEDB' reported an error. OLE/DB Provider 'SQLOLEDB' ::GetSchemaLock returned 0x80004005: OLE DB provider SQLOLEDB supported the Schema Lock interface, but returned 0x80004005 for GetSchemaLock .]. OLE/DB provider returned message: Connection is busy with results for another command OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ::CreateSession returned 0x80004005.
注記 エラーの OLE DB ソースは異なる場合があります。ただし、エラー メッセージのすべてのバリエーションには、「別のコマンドの結果で接続がビジーです」というテキストが含まれます。
解決
この問題を解決するには、Microsoft SQL Server 2000 の最新のサービス パックを入手します。
そこに記載されているように、この問題は SQL Server 2000 Service Pack 4 で初めて修正されました。
このブログ投稿 RDA Corp のシニア ソフトウェア エンジニアである Mark Meyerovich による次のような洞察も提供されています (元のリンクが切れたため、現在はアーカイブされています)。
SQL Server サービス パックのアップグレード
Google で簡単に検索すると、次の記事が表示されます (http://support.microsoft.com/kb/822668):修理:リンク サーバー クエリを実行すると、「別のコマンドの結果で接続がビジーです」というエラー メッセージが表示されます。
これは基本的に問題がバグであることを示唆しており、Service Pack 4 へのアップグレードを推奨しています。私たちは SQL Server 2000 SP3 から始めましたが、いくつかのリンク サーバーが関係しているので、試してみます。SP4 にアップグレードした後も、同じ結果になります。
他のヒント
私が今発見したのですが、MARS が有効になっていない場合、これは SQL 2005 でも発生する可能性があります。デフォルトで無効になっているとは知りませんでしたが、実際に無効になっています。また、「ネイティブOLEDB SQLネイティブクライアント」接続タイプを使用していることを確認してください。「OLEDB.1」タイプの接続 (またはその他) を使用している場合、MARS はオプションですらないため、SQL 2000 の動作が発生しますが、これは厄介です。
MARS を有効にするには、接続プロパティを開いて [すべて] をクリックし、Management Studio を下にスクロールします。
あなたの質問はとっくの昔に答えられていることはわかっていますが、これは私のような、これで火傷を負う次の吸盤のためにこれを投げているだけです。
今日、SQL Server for Linux から SQL Server への接続用の MS ODBC Driver 11 でこのエラーが発生しました。私が検索を行ったとき、これが最初の Google 検索結果であったことを考慮して、次の検索者を支援したいと考えました。
/etc/odbc.ini で MARS_Connection を次のように設定する必要があります。
[ConnName]
Driver=ODBC Driver 11 for SQL Server
Server=192.168.2.218,1433
Database=DBNameHere
MARS_Connection=yes
MS ODBC Linux ドライバーについて言えば、次のようになります。これに対処するには完全な PITA ですが、私はネイティブ ソリューションを使用することを主張しました。特にZF2では多くの壁を経験しましたが、どんなトラブルもドライバーがあれば必ず解決すると言えます。代わりにそれを使用している人にすぐにやめるよう奨励するためです。
ODBC で PHP PDO を使用しているときに誰かがこの迷惑なバグに遭遇した場合は、次のようにしてください。 closeCursor()
クエリ実行後のメソッド。
他の人が問題を抱えている場合の情報として。埋め込みSQLを使用してODBC経由でSQLEXPRESS上の富士通のNetCobol経由で接続しようとしましたが、問題を解決するにはレジストリの値を変更する必要がありました。
\HKLM\Software\ODBC\ODBC.INI\MyDSN
MyDSN を文字列値として使用します。
Name - MARS_Connection
Value - Yes
役立つ場合にのみ、ここに情報を記載します。