2015年8月29日土曜日

SQL Server 2012からBCPを使用すると問題が発生します。

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をうまくする必要があります。

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>

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) が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。


2015年7月21日火曜日

Windows Server 2012R2でリモートデスクトップを切断すると30分後に自動ログオフされる


Windows Server 2012R2でリモートデスクトップを切断すると30分後に自動ログオフされる
について調べました。

結果は、設定があり、Windows Serverに設定されていました。
http://qiita.com/nakajima_yuji/items/52fa3401234900772d1b

設定例
未設定
コメント
 設定した記憶が無いのに設定されているサーバと設定されていないサーバが存在する。
 

2014年12月18日木曜日

ファイルまたはアセンブリ 'Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

下記の4つのモジュールを追加にインストールして対応した。


2012SharedManagementObjects_x86
2012SharedManagementObjects_x64

2012SQLSysClrTypes_x64
2012SQLSysClrTypes_x86




参考
ダウンロードページについて
http://www.experts-exchange.com/Database/MS-SQL-Server/Q_28458757.html
↓
ダウンロードモジュールについて
http://www.advancesharp.com/blog/1113/could-not-load-file-or-assembly-microsoft-sqlserver-management-sdk-sfc


2014年12月10日水曜日

Disposeのテストについて


▼Controllernのコード

protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
Debug.WriteLine("Dispose disposing=" + disposing);
base.Dispose(disposing);
}

▼単体テストのコード

[TestMethod]
public void Dispose()
{
ApiBeginController controller = new ApiBeginController();

controller.Dispose();

System.GC.WaitForPendingFinalizers();

}

⇒これでコードカバレッジが100%となりました。