[FIX] SQL プロファイラ または SQL トレースを使用するとアクセス違反が発生する

文書翻訳 文書翻訳
文書番号: 308723 - 対象製品
この記事は、以前は次の ID で公開されていました: JP308723
すべて展開する | すべて折りたたむ

現象

SQL Server プロファイラまたは SQL トレースを使用すると、アクセス違反 (AV) と次のエラー メッセージのいずれかまたは両方が発生することがあります。
トレース データを読み取れませんでした。
アクセス違反は、次の条件がすべて成立する場合に発生する可能性があります。
  • SQL トレースのデータ列として [TextData] 列を選択する。
  • Isql.exe などの非 Unicode クライアントからテキスト データが送られる。
  • テキスト データに 2 バイト文字セット (DBCS) の文字が含まれている。
アクセス違反発生時の short stack trace は次のとおりです。
Short Stack Dump
004D8C1C Module(sqlservr+000D8C1C) (CShortConstLockBytesSS::ReadAt(union _ULARGE_INTEGER,void *,unsigned long,unsigned long *)+0000002B)
006550EA Module(sqlservr+002550EA) (CLockBytesToLBSS::ReadAt(union _ULARGE_INTEGER,void *,unsigned long,unsigned long *)+00000035)
006E2C2C Module(sqlservr+002E2C2C) (TSendRowClass<3,0>::TSendLOB(struct srv_proc *,class CTypeInfo const *,class CXVariant *)+0000026E)
006E087C Module(sqlservr+002E087C) (CValOdsRow::SetDataX(unsigned long *,class CXVariant *)+00000221)
00426566 Module(sqlservr+00026566) (SetDataWithPop(class CEsExec *,class CXVariant *)+0000001C)
00416524 Module(sqlservr+00016524) (CEs::GeneralEval4(unsigned long *,class CEsExec *,class CXVariant *)+0000003D)
004270DA Module(sqlservr+000270DA) (CStmtQuery::ErsqExecuteQuery(class CMsqlExecContext *,class CEsComp const *,class CEsComp const *,unsigned long *,int,int)const +00000451)
00441A34 Module(sqlservr+00041A34) (CStmtSelect::XretExecute(class CMsqlExecContext *)const +0000021C)
004160DB Module(sqlservr+000160DB) (CMsqlExecContext::ExecuteStmts(class ExecutionContext *)+0000027E)
00415765 Module(sqlservr+00015765) (CMsqlExecContext::Execute(class CCompPlan *,class CParamExchange *)+000001C7)
00415410 Module(sqlservr+00015410) (CSQLSource::Execute(class CParamExchange *)+00000343)
0049CD0A Module(sqlservr+0009CD0A) (CStmtExec::XretLocalExec(class CMsqlExecContext *,unsigned short *,int,class WParseName *)const +00000154)
0049CB9F Module(sqlservr+0009CB9F) (CStmtExec::XretExecute(class CMsqlExecContext *)const +00000322)
004160DB Module(sqlservr+000160DB) (CMsqlExecContext::ExecuteStmts(class ExecutionContext *)+0000027E)
00415765 Module(sqlservr+00015765) (CMsqlExecContext::Execute(class CCompPlan *,class CParamExchange *)+000001C7)
00415410 Module(sqlservr+00015410) (CSQLSource::Execute(class CParamExchange *)+00000343)
00459A54 Module(sqlservr+00059A54) (language_exec(struct srv_proc *)+000003C8)
004175D8 Module(sqlservr+000175D8) (process_commands(struct srv_proc *)+000000E0)
410735D0 Module(UMS+000035D0) (ProcessWorkRequests(class UmsWorkQueue *)+00000264)
4107382C Module(UMS+0000382C) (ThreadStartRoutine(void *)+000000BC)
7800BEA1 Module(MSVCRT+0000BEA1) (_beginthread+000000CE)
77E637CD Module(KERNEL32+000037CD) (TlsSetValue+000000F0) 
トレースをファイルに書き込んだ場合は、トレース ファイルを開こうとすると、SQL Server プロファイラによって次のエラー メッセージが表示されます。
ファイル データを読み取れませんでした。ファイルが壊れているか、データ形式が無効です。
[TextData] 列を選択しなければ、エラーは発生しません。

原因

非 Unicode テキストを Unicode テキストに変換する際、SQL Server が変換対象の文字列サイズを大きく見積もりすぎることが原因です。

解決方法

この問題を解決するために、SQL Server 2000 の最新の Service Pack の適用をお願いいたします。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。
http://www.microsoft.com/japan/sql/download/default.asp (日本語版)
http://www.microsoft.com/sql/downloads/default.htm (英語版)

状況

弊社では、これを Microsoft SQL Server version 2000 の問題として確認しています。
この問題は、Microsoft SQL Server version 2000 Service Pack 2 で修正されています。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 308723 (最終更新日 2001-12-10) をもとに作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 308723 - 最終更新日: 2003年11月12日 - リビジョン: 2.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition
キーワード:?
kbbug kbfix KB308723
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com