SQL Server Developer Edition が無償で提供されていました

3ヶ月ほど前でしょうか。見落としてました。。

SQL Server Developer Edition が無償提供されます | SQL Server サポート の中の人
Microsoft SQL Server Developer Edition is now free | SQL Server Blog

Visual Studio Dev Essentials ユーザーに Developer Edition が提供されているようです。
Free Developer Offers | Visual Studio

良い感じですねー。

7/2(土) CLR/H で SQL Server / T-SQL のお話しします

CLR/H #clrh101 ~日本の夏、MR の夏~ - connpass

ひょんなことから CLR/H でお話しさせていただくことになりましたー。

何話すか悩んだのですが、ベタに SQL Server 絡みのお話しにしました。
久々の登壇(今年入って初)で、準備やらバタバタしてますがちゃんとお話し出来るよう頑張ります!

他にも旬な HoloLens、PoserShell 5.0 と面白そうなので是非ご参加を~。

第3回 関西DB勉強会 明日開催です!

明日開催なのですが、若干空きが出来たので宣伝~。

第3回 関西DB勉強会 - 関西DB勉強会 | Doorkeeper

このメンバーで、各DBのプロフェッショナル達がホワイトボード中心で徹底的にアーキテクチャの違いを議論します。

Oracle:小幡一郎 (株)インサイトテクノロジー代表
MySQL:山﨑 由章 (日本オラクル株式会社 MySQL GBU)
PostgreSQL:曽根 壮大(日本PostgreSQLユーザ会)
Firebird/MySQL:木村明治 Firebird日本ユーザー会
SQL Server:小澤真之 フリーランス (Microsoft MVP for Data Pratform)
DB2 :寺元良一 三木会(インサイトテクノロジー主催)

どんな風になるのか楽しみ!
ご都合の良い方は是非~。

T-SQL FORMATMESSAGE の機能強化

SQL Server 2016 で強化された T-SQL で、開発時にクエリ書く人が使いそうなのをピックアップして取り上げてみようと思います。

SQL Server 2016 RC3 から FORMATMESSAGE が引数に、メッセージ番号だけではなく任意の文字列を受け取れるようになりました。
FORMATMESSAGE (Transact-SQL)

FORMATMESSAGE が元々どういうものかと言うと

SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1033;
DECLARE @var1 VARCHAR(200); 
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable'); 
SELECT @var1; -- The article 'First Variable' could not be added to the publication 'Second Variable'.

こんな感じのやつです。
sys.messages の message_id を渡して、文字列を作成するってやつです。
これが message_id ではなく、任意の文字列を受け取れるようになりました。
メッセージの文字列は、RAISERROR (Transact-SQL) の msg_str と同じ制限があります。
例えば上と同じ結果を返そうとすると以下のクエリになります。

select FORMATMESSAGE('The article ''%s'' could not be added to the publication ''%s''.', 'First Variable', 'Second Variable');

String.Format メソッド (String, Object[]) (System) のような感じで使えます。
sys.messages 関係無く使えるので、別の関数名で新しく作っても良かったのでは?と思いましたが、
この機能アンドキュメントなだけで、2016 より前のバージョンでも使えました。
検証のため全部同じクエリで試しています。

SQL Server 2016

ドキュメント通り使えます。

SQL Database v12

SQL DB はまあ使えて当然な感じ。

SQL Server 2014

2014 でも使えますね~。

SQL Server 2012

なんと 2012 でも使えます。

SQL Server 2008

さすがに 2008 は無理でした。


というわけで、2012 以降から使えそうですね。
もともと使えてたから、関数名も変えずにそのままでってところなんでしょうか。
引数は、文字列リテラルに限らずテーブルの列やサブクエリも書けるので自前のメッセージテーブルから使うことも出来ます。

例:sys.messages を自前のメッセージテーブルと思ってください。

select FORMATMESSAGE( 
  (SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1033)
  , 'First Variable'
  , 'Second Variable'
)

select FORMATMESSAGE(text, 'First Variable'  , 'Second Variable') FROM sys.messages

5/18(水) SQLWorld★大阪#37 開催します

2週間前の告知! SqlWorld :: SQLWorld★大阪#37 開催します。19回目の平日夜開催で、前回同様 ハンズオン 形式行う予定です。

【日時】
2016年5月18日(水曜日) 19:00~21:00
 

【イベント概要】
SQLWorld 19回目の平日夜開催~。今回も、みんなで SQL を書いてみようというハンズオン企画です!ブラウザがあれば参加出来るようにしていますので、iPad 等のタブレットでも大丈夫です。
 

【会場】
フェンリル株式会社さま大阪本社 http://www.fenrir-inc.com/
〒530-0011 大阪府大阪市北区大深町 3番1号 グランフロント大阪タワーB(オフィス) 14F
http://info.fenrir-inc.com/jp/profile/overview.html
 

【参加費】
無料
 

【持ち物】
パソコン/タブレット (DB のインストールは不要です。)
 

【参加可能人数】
13 人
 

お題に沿って、SQL を書いてみようという勉強会です。是非ご参加を~。

開催回数は増えていっていますが、続き物というわけでは無いので初めて参加される方でもお気軽にどぞー。