あれとアレは混ぜるな危険

日々精進をしているふり

Azure の IaaS で作った SQL Server の照合順序は最初に変えたほうがいいと思う

こんにちは、はるたまです。
最近は半袖です。

今日の元ネタはここからです。
http://blog.sqlauthority.com/2016/04/05/sql-server-change-sql-server-collation-microsoft-azure-vm-iaas/

Azure の IaaS で SQL Server がインストール済みの仮想マシンをポチッと作成できるのは、そろそろ広く知られてもいいんじゃないかなと思っています。

ところで、ポチッと SQL Server 入りの仮想マシンが出来上がるのはいいのですが、問題になるのはサーバーの照合順序をデプロイの段階で指定することができないということです。問答無用で「SQL_Latin1_General_CP1_CI_AS」の SQL Server が出来上がって、日本人としては何ともやるせない気分になります。
こんな事情があるため、SQL Server 入りのインスタンスが作成された後でサーバーの照合順序を変える作業がほぼ確実に発生します。

仮想マシンができたてホヤホヤの状態でサーバー照合順序を変えるのは何ということもないのですが、データを投入してしまった後でサーバー照合順序を変えるのは、なかなか面倒な事になります。
サーバーの照合順序の設定または変更
ですので、サーバー照合順序を変えるのは仮想マシンが出来上がって即、実行することをおすすめします。

実際の作業

最初に SQL Server の SA アカウントを有効にしておきます。
初期状態の SQL Server には、仮想マシンの管理者ユーザーで Windows 統合認証すると管理者権限がある状態でログインできますが、SA アカウントは無効な状態になっています。
まずは SA アカウントにパスワードを設定して、有効な状態にしておきます。

SA アカウントでログインできるようになったら「C:\SQLServer_??.0_Full」をエクスプローラーで開きます。「??」の部分はインストールした SQL Server のバージョンによって異なってきます。

この中に SQL Server のインストールイメージが格納されていて setup.exe も配置されているはずです。

この場所でコマンドプロンプトを管理者権限で開いて、以下の様なコマンドを実行します。

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=【サーバーインスタンス名】 /SQLSYSADMINACCOUNTS=【SYSADMIN権限を持つWindowsアカウント】 /SAPWD=【SAアカウントのパスワード】 /SQLCOLLATION=【照合順序の名前】

具体的にはこんなコマンドになります。

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" /SAPWD=【SAアカウントのパスワード】 /SQLCOLLATION=Japanese_CI_AS

2~3分くらい待っていると終わりますので、SSMS からシステムデータベース(MASTER とか MSDB とか)のプロパティを開けば、照合順序が変更されているかを確認できます。

ちなみに、Azure の仮想マシンSQL Server を作る場合は、Web エディションがおすすめです。
SQL Server 2014 の各エディションがサポートする機能
ライセンス料が安い割に大きいデータベースを扱えますよ。