布団が俺を呼んでいる

丘山大一のぶろぐ

リュックを買ったよ!

衝動買いとも言う。
買ってしまったのは下記。

どこでも座れるリュックPlus ≪サンコー≫ BAKPK2C4

価格:5,280円
(2015/9/21 17:18時点)
感想(0件)

実際に使ってみないといいか悪いか判断できないので、後でレビュー? してみる。

Windows Server 2012R2 で KB2919355の Updateに失敗する

またまた失敗談。
前回はWindows Server 2012R2 Update からスタートでしたが、今回はUpdate無しからのスタート。
初回のWindowsUpdateは成功しますが、KB2919355の適用で失敗します。

今回も人様の記事に助けて頂きました。感謝感謝です。
記事ではWIndows8.1ですが、Windows Server 2012R2 でも同様の対応で突破できます。

1.管理者権限cmdで
 dism /online /remove-package /packagename:Package_for_KB2919355~31bf3856ad364e35~amd64~~6.3.1.
 実行。
2.管理者権限cmdで
 dism /online /cleanup-image /startcomponentcleanup
 実行。
3.更新プログラムを手動ダウンロードしてくる。
 「ダウンロードするプログラムを選んでください」にはWindows8.1と書いてあるけど気にしない。
 Windows8.1-KB2919355-x64.msu を選択してダウンロード。
 ダウンロードし終えたらインストール。

なんかこれ、以前にもひっかかったような気がする……。

ひと目でわかるWindows Server 2012 R2 [ 天野司 ]

価格:2,808円
(2015/9/20 17:05時点)
感想(0件)

Windows Server 2012R2 で 初回のWindows Updateに失敗する

結構ハマってしまいました……。
初回のWindows Updateに失敗した後、再起動が終わらず、何もできなくなってしまいます。
調べていると、初めにひっかかるのがKBの当てる順番なんかが出てくるので、そちらにチャレンジしたり、アレコレしているうちに時間を喰ってしまいました。
助かりました、ありがとうございます。

OS(Windows Server 2012 R2 With Update)のインストール後、速攻でKB2975061をダウンロード、個別適用。
後はふつーに成功しました。


マイクロソフト Windows Server 2012 R2 Standard 日本語版 5 CAL付

価格:140,835円
(2015/9/20 17:01時点)
感想(1件)

SQL Server で、SQLの処理時間 簡易取得

ざっくり取得。

DECLARE @StartTime datetime
SET @StartTime = GETDATE()
--ここに処理を記述
SELECT CONVERT(varchar,GETDATE()-@StartTime,114) AS 実行時間

SQL Server の MDF,LDF を差し替える

SQL Serverが入っているマシンが壊れたけど、バックアップが無いよ!
という時に、壊れたマシンハードディスクからMDFファイルとLDFファイルだけなんとか引っこ抜いて、確認のために、自分の環境に復元、なんてことをすることがあります。
(え? ありませんか?)
この時、フツーにManagement Studioからアタッチできれば楽勝なのですが、他のアプリやらユーザやらの関係で、「環境作るの面倒だし、既存のMDFとLDFと差し替えて動かしたい」ということがちょいちょいあります。
基本的には、下記の手順で実行可能(だと思う)。

1.構成マネージャからインスタンスのサービスを停止。
2.MDF、LDFファイルを差し替える。

で、ここからが本題。
ファイルを預かる時は、
大概ネットワーク経由
かつマシンの状態がこちらと同一ではありません。
なので、プロパティからセキュリティを確認すると、うまく動かない設定になっていることがちょいちょい。
なのでファイルプロパティを最低限整えます。

3.「他のコンピューターから取得した~」のブロックを外す
4.必要な、あるいは足りないユーザ権限をくっつける
 やり方は、ファイルのプロパティ - セキュリティタブ - 編集 から、「ほげほげのアクセス許可」ダイアログを開く。
 「追加」ボタンからユーザをくっつける。
 「オブジェクトの種類」は、よく分からなければ全部チェック。
 「場所」は、状況によりけりですが、AD環境のユーザを追加するのでなければコンピュータ名を選べばだいたいOK。
 このとき、ユーザは一生懸命入力して探すよりも、「詳細設定」ボタンを開いて、「検索」から抽出する方が楽。
 というより、ここでは自分の環境に復元する=ローカルマシン登録されているユーザくらいなら、絞り込まなくても大丈夫という理屈。
 追加したら、あとはそのユーザに権限を付与。ローカルでちょいと動かすだけなら、何も考えずにフルコントロールを振っておく。
 個人的によく追加するのは、
(1) SQL Server のユーザ(SQL で始まっているヤツ)
(2) NETWORK SERVICE
 のふたつ。
5.構成マネージャからインスタンスのサービスを再開。

これで何事もなかったかのよーに差し替えが完了します。

多分ね!
(全然調べずに、経験則でやるというプログラマにあるまじき方法の紹介でした)

表示されている邪魔な「画面だけ」を消してみる

某所で常駐させろと言われているアプリの画面が、ぶっちゃけ死ぬほど邪魔なので、非表示にしてみた。
常駐させろ=プロセスは残っているんだから画面が非表示でもいいだろ、という理屈。
言語はC#です。
といってもメインなのはWindpwsAPIですけど。

//API用
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;

private void ProcessHide() {
    Process[] allProcess = 
       Process.GetProcesses()
        .Where(m => (m.ProcessName == "HogeProcessName") && (m.MainWindowTitle == "HogeWindowTitle"))
        .ToArray();
    foreach (var item in allProcess) {
        ShowWindow(item.MainWindowHandle, SW_HIDE);
    }
}

コードを見ていただければ分かると思いますが、別にC#である必要は無いです。
まあそこはそれ、
書くの楽だし。

再表示のことは何も考慮していないので、再表示させる方法は別途用意してください。

インスタンス内に存在する複数のデータベースに同一のSQLを投げて結果を取得したい

インスタンス内に存在する複数のデータベースに同一のSQLを投げて、
SELECT結果を一挙に取得したいことが時々あります。
やり方をちょいちょい忘れるのでメモ。

USE master

/* 変数 */
DECLARE  @dbname varchar(80);
DECLARE @SQL nvarchar(256);
CREATE TABLE #RESULT_TABLE
(
DBNAME nvarchar(80)
,HOGE_COL char(50)
)

/* DB一覧を取得するカーソル */
DECLARE DbNameList CURSOR FOR
 SELECT NAME FROM sys.databases
 WHERE NAME LIKE 'HOGEDB%'

OPEN DbNameList

/* DB名を取得   */
FETCH NEXT FROM DbNameList INTO @dbname;

WHILE @@FETCH_STATUS = 0
 BEGIN

 /* 出力 SQLの中身は適当*/
 SET @SQL = 'INSERT INTO #RESULT_TABLE SELECT '  + '''' + @dbname + ''' AS DBNAME' + ' ,HOGE_COL FROM ' + @dbname + '.[dbo].' + 'HOGE_TABLE ;';
 EXECUTE sp_executesql @SQL

 /* 次の調査対象となるDB名を取得 */
 FETCH NEXT FROM DbNameList INTO @dbname;
END;

/* お片付け */
SELECT * FROM #RESULT_TABLE
CLOSE DbNameList;
DEALLOCATE DbNameList;
DROP TABLE #RESULT_TABLE

GO


もっと効率のいいやり方や、綺麗な書き方もあるでしょうが、個人的用途ではこれで十分。
本当はテーブル値変数を使うつもりでしたが、動的SQLではテーブル値変数がうまく使えない?
みたいなので、一時テーブルを使っています。
転がっていたSQL Server2008R2 で確認しています。

Microsoft FEST 2015 に参加してきました その2

土日は体調不良によりブログを更新できませんでしたが、最終日も参加してきました。

何よりの感想は「人多すぎ」ですw
通路は人で埋まるので、思うように移動できません。
さらに広い会場にするか、人数制限しないともう対応できないと思います。

さてセッションですが、「45 分でわかる! DevOps とマイクロソフトの技術」が面白かったです。
私はウォーターフォールモデルに絶望しているタチなので(もちろん、ウォーターフォールモデルにもいいところはありますが)、アジャイル、DevOpsといったことに挑戦してみたいなー、とは思っています。ただ理解が漠然としているのですよね。
でもこのセッションを聞いてなんとなく分かったような気がします。
配信されるかどうかは分かりませんが、もしされたらご視聴をおすすめします。

あとは「ビジネスで使うための、初めての Azure を使った動画配信詳細を見る」が面白かった。
自分は動画を取り扱ったことがないので、「何が」凄いのか理解しきれません。ですが、動画配信とは「動画の時間」「動画の質」「視聴者数」「ネットワーク」を意識するものなのだなあ、ということはわかりました。
そんなん当たり前だろ、と言われればそうなのでしょうが、でも全く知らない人間(私)にとっては、これらを一回で説明してくれたセッションは非常に有意義なものでした。
動画を一度配信してみて、苦労を体感してからまた聞き直してみたいなあ、と思います。
そうするとまた感想が変わってくるに違いない。

総合して、今回もためになるイベントでした。
今年はGoAzure, DeCode、Festと参加していますが、次の大型イベントも参加できるといいなあ。

Microsoft FEST 2015 に参加してきました

2,3日目参加予定です。

まずは本日参加の2日目から。

Expo含め、見ているとOFFICE365がかなりの勢力を占めていた印象です。
占め過ぎていて人の分散に成功していた感じすらありますが。
デバイスでは、初めてSurfaceHubを触りました。
実際に触って、利用例を見てみると結構面白い。
ただ、ちょっと微妙だな、と思うのはベースとなっているのがOneNoteであること。
OneNoteは連携機能や便利機能が多すぎて、「ただのホワイトボード」とでは無くなってしまっているんですよね。
あとお値段がどうしても張ります。
本体費用以外にも他のパーツも必要ですので。
使い方を本気で考えて、運用時に使用するアプリを探しておくか開発して具体性を強く持たせないと会社では買ってもらえないでしょう。

お土産ではタンブラーなんかを貰ったりしました。
無料で参加してお土産を貰えるとは思っていなかったので、これは予想外の嬉しさ(単純)。

なんとなく形になった?

以前はWordPressでブログを作っていましたが、環境が色々おかしくなってしまい、挫折。
再作成するにあたり、折角なので違うものを使ってみようと思い、探した結果、Blogengine.netを利用することにしました。

……そして激しく後悔。

ウィジェットが少ない(これは自力で増やせよ、という話ですが)のはともかく、情報が全般的に少ないのが痛い。
あと日本語対応が微妙? これは後で調べてみよう。
まだ合計で数時間しか触っていませんが、やっぱりWordPressって便利だったんだなあ、と感じつつ、台風を眺めていようと思います。