SQL Server 2012からBCPを使用すると問題が発生します。
BCPでファイル化するさいに、対象のテーブルの内容にNULLがあると、BCPはエクスポートする際に、警告を出します。
http://blogs.msdn.com/b/jpsql/archive/2013/08/16/sql-server-2012-bcp-bcp-null.aspx
警告を出すので、BCPが0で終わらなくなり、バッチが失敗します。
SQL Server 2012のBCPからの動作です。
SQL Server 2012では、NULLを入らないようにJOINをうまくする必要があります。
2015年8月29日土曜日
BCPの項目数が異なる場合のエラーについてSQLState = 22005、SQLState = S1000
1)BCP先のテーブルのほうが項目数が少ない場合
10:30:33.29>bcp wrk.dbo.TestTable in a.txt -S localhost -U sa -P TCOS -t, -c
コピーを開始しています...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Invalid character value for cast specification
0 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計 : 31
2)BCP先のテーブルのほうが項目数が多い場合
10:34:29.56>bcp wrk.dbo.TestTable in a.txt -S localhost -U sa -P TCOS -t, -c
コピーを開始しています...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Unexpected EOF encountered in BCP data-file
0 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計 : 16
10:35:05.93>
10:30:33.29>bcp wrk.dbo.TestTable in a.txt -S localhost -U sa -P TCOS -t, -c
コピーを開始しています...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Invalid character value for cast specification
0 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計 : 31
2)BCP先のテーブルのほうが項目数が多い場合
10:34:29.56>bcp wrk.dbo.TestTable in a.txt -S localhost -U sa -P TCOS -t, -c
コピーを開始しています...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Unexpected EOF encountered in BCP data-file
0 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計 : 16
10:35:05.93>
2015年8月7日金曜日
デットロックの調査方法
1)SQL Profiller
Locks>Deadlock graph
を設定する
ProfilerでDeadlock graphをキャプチャしてキャプチャ後にマウスカーソルを移動すると
それぞれのクエリを確認できることを確認しました。
2)トレース設定
設定方法
dbcc traceon(1222,-1)
解除方法
dbcc traceoff(1222, -1)
結果は、SQL Serverログに落ちます。
参考文献
ブロッキングとデッドロックを後追い確認する方法
http://blog.engineer-memo.com/2012/08/30/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%A8%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E5%BE%8C%E8%BF%BD%E3%81%84%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9/
エラー
メッセージ 1205、レベル 13、状態 51、行 10
トランザクション (プロセス ID 54) が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。
トランザクション (プロセス ID 54) が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。
登録:
投稿 (Atom)