昨日、facebook で話に上がったのでメモとして。
■Windows Internal Database のメンテナンス
Windows Internal Database (WID) という機能を OS の標準の機能として使用することができます。
AD RMS / WSUS / AD FS で使用されていることがあるかと思います。
この機能ですが、名前付きパイプで動作している SQL Server になりますので SQLCMD 当のツールで接続することができます。
# SQL Server Embedded Edition になるのでしょうか。DB サイズの上限は調べてみたのですが MS のページでまとまったものが見当たりませんでした…。
サービスとしては、[Windows Internal Database (MICROSOFT##SSEE)] となります。
このサービスの実行ファイルのパスを見ると、[sqlservr.exe] を起動していることが確認できますね。
ファイルのパスに移動してみると SQL Server の標準的なディレクトリ構成となっていることが確認できます。
WID ですが、[MICROSOFT##SSEE] というインスタンス名の SQL Server になりますので、SQL Server に接続するためのツールを使用することで接続ができます。
WID はローカルサーバー上で利用をするための機能ですので名前付きパイプによる接続のみをサポートしています。
そのため、以下のようなサーバー名を指定することで接続ができます。
?\.pipeMSSQL$MICROSOFT##SSEEsqlquery
この接続名については LOG ディレクトリ内の ERRORLOG からも確認することができます。
SQLCMD で接続をする場合は以下のような形式ですね。
WID のインストールでは SQLCMD はインストールされませんので、MicrosoftR SQL ServerR 2012 Feature Pack 等の機能パックからMicrosoftR SQL ServerR 2012 コマンド ライン ユーティリティ をインストールする必要があります。
MicrosoftR SQL ServerR 2012 Express から SQL Servr Management Studio Express (SSMSE) をインストールしてもよいかもしれないですね。
接続をした後は通常の SQL Server の操作となりますので @@version でバージョンを確認することもできます。
# バージョンについてはERROR ログにも出力されていますが。
上の画像は Winodws Server 2008 R2 SP1 の WID のバージョンになるのですが SQL Server 2005 ベース (9.x) のものが使用されているようですね。
下の画像が Windows Server 2012 RC の WID のバージョンになります。
SQL Server 2012 ベース (11.x) が使用されているようですね。
インスタンス名に関しては、[MICROSOFT##WID] となっているようです。
こちらの画像はAD FS 2.0 をインストールした環境の WID のインスタンスのデータベースとなります。
AD FS 用として、AdfsConfiguration / AdfsArtifactStore というデータベースが作成されていることが確認できますね。
通常の SQL Server のデータベース構成と同じですので、WID のデータベースが不整合を起こしていないかなどは [DBCC CHECKDB(‘<データベース名>’)] で確認をすることができます。
また、バックアップを [BACKUP DATABASE <データベース名> TO DISK='<バックアップファイル名>’] を実行することでデータベースバックアップを取得することも可能です。
通常の SQL Server のメンテナンス作業と同じことが WID でもできそうですね。
WID のインスタンスに直接接続して何かをするケースは少ないかと思いますが、接続方法は知っておくと有事の際にあわてないで済むかもしれないですね。