Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
山田 浩史
SQL Engine Support Engineer
みなさん、こんにちは。今回は、osql を使用していると直面しうるエラーについて紹介します。
現象
osql ユーティリティにて DBCC CHECKDB を実行した場合、出力結果内に "SQLGetDiagRec failed" のメッセージが大量に出力される。
-o オプションを使用して、結果をファイルに出力した場合も、コマンドプロンプトの標準出力に結果を出力した場合も同様に "SQLGetDiagRec failed" のメッセージが出力されます。
本現象の特徴は、出力結果内の 32768 行目から "SQLGetDiagRec failed" のメッセージが連続して出力される事です。
出力例:
-----
32766 行目 'test_table' の DBCC 結果。
32767 行目 オブジェクト "test_table" の 0 ページには 0 行あります。
32768 行目 SQLGetDiagRec failed
32769 行目 SQLGetDiagRec failed
32770 行目 SQLGetDiagRec failed
32771 行目 SQLGetDiagRec failed
32772 行目 SQLGetDiagRec failed
32773 行目 SQLGetDiagRec failed
:
-----
原因
osql の仕様上の制限です。
影響
DBCC CHECKDB の結果が正常に確認出来ません。
回避策
sqlcmd ユーティリティを使用します。
sqlcmd ユーティリティでは、"SQLGetDiagRec failed" のメッセージが出力される事はありません。
osql ユーティリティは SQL Server の将来のバージョンで削除される予定の機能となるため、sqlcmd ユーティリティの使用を推奨しています。
コマンド例:
sqlcmd -E -Q"DBCC CHECKDB (test_db)" -o C:\checkdb.txt
参考情報
osql ユーティリティ
https://msdn.microsoft.com/ja-jp/library/ms162806.aspx
sqlcmd ユーティリティ
https://msdn.microsoft.com/ja-jp/library/ms162773.aspx