3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part2

(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part1の続きです。

SQL Serverへのネットワークアクセス許可

SQL Server Express はインストール直後はセキュリティの問題で、ネットワーク越しのアクセスができないようになっています。

これだと意味がないので、TCPもしくは名前付パイプで外部からアクセスできるようにしてやる必要があります。

ネットなどを探してみると、SQL Server 構成マネージャー や SQL Server セキュリティ構成 を使って GUI で設定している方法はよく見かけるのですが、ユーザレスな CUI で設定する方法がなかなかありません。

で、結局たどり着いたのは下記の方法です。

MSDNを旅していると、SQL Serverには現在のデータベースエンジンの構成をXMLにインポート・エクスポートする機能があることが分かりました。(MSDN:SQL Server セキュリティ構成

その中にネットワークの設定(セキュリティ構成)もありました。

それで、一旦開発用DBの設定をSQL Server付属の sac ユーティリティを使ってエクスポートし、それをインポートさせることとしました。

SQL Serverの構成をエクスポートするのは下記のコマンドで可能です。

なお、sac.exe についてはMSDN:sac ユーティリティに詳しく載っています。

>"%ProgramFiles%\Microsoft SQL Server\90\Shared\sac.exe" out setting.xml -U sa -P 1234 -i MSSQLServer -DE

Exporting surface area settings for Database Engine instance VPC-XPHOME-SP2\MSSQLSERVER...Started

Exporting surface area settings for Database Engine instance VPC-XPHOME-SP2\MSSQLSERVER...Complete

ちなみに、エクスポートした XML は下記のようになっています。

 version="1.0" encoding="utf-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

>

xsi:type="Component">

>SqlServer>

>DatabaseEngine>

>

xsi:type="Instance">

>MSSQLSERVER>

>

>MSSQLSERVER>

>Auto>

>Running>

>

>

....省略

>

>

xsi:type="Pair">

>NamedPipes>

xsi:type="xsd:boolean">true>

>

xsi:type="Pair">

>TCPIP>

xsi:type="xsd:boolean">true>

>

>

>

>

>

>

>9.0.242.0>

>

肝心なのは NamedPipes と TCPIP の value が ture か false かということですね。

これが true になってると、ネットワーク越しのアクセスができるようです。

この XML をサイレンインストールした SQL Server に下記コマンドインポートします。(XML内のインスタンス名があっているか注意必要です。)

>"%ProgramFiles%\Microsoft SQL Server\90\Shared\sac.exe" in setting.xml -U sa -P 1234 -i MSSQLServer -DE

Importing surface area settings for Database Engine instance VPC-XPHOME-SP2\MSSQLSERVER...Started

Changes to Connection Settings will not take effect until you restart the Database Engine service.

Importing surface area settings for Database Engine instance VPC-XPHOME-SP2\MSSQLSERVER...Complete

上記でインポートした設定を適用するために、SQL Serverのサービスを再起動します。(サービスの指定には対象の SQL Server のインスタンス名を指定するっぽいです)

>net stop MSSQL$MSSQLSERVER

SQL Server (MSSQLSERVER) サービスを停止中です..

SQL Server (MSSQLSERVER) サービスは正常に停止されました。

>net start MSSQLSERVER

SQL Server (MSSQLSERVER) サービスを開始します..

SQL Server (MSSQLSERVER) サービスは正常に開始されました。

■ファイアウォールの設定

SQL ServerにクライントPCがアクセスできるようにWindows ファイアウォールのルール設定です。

サードパーティ製のファイアウォールが入ってる場合は…まあ、導入者自身でなんとかしてくれとしか言えないですね。

netsh firewall コマンドでSQL Serverが使う 1433 ポートを開放します。

なお、SQL Serverのインスタンス名が規定でない場合はポートが動的になるので、固定に変更するか、sqlservr.exeプロセスをルールに加えるかにしないといけませんね。(動的ポートを使うためにはSQL Server Browserサービスを動かしてないといけません。で、SQL Server BrowserにクライアントからアクセスできるようにするためUDP1434ポートを開放しないといけないみたいです。)

詳しくはSQL Server 2005でネットワーク接続を有効にするには?

netsh firewall add portopening protocol = TCP port = 1433 name = SQL_SERVER_EXPRESS

次回はアプリケーションで使うデータベースファイル(mdf)をSQL Serverにアタッチする方法です。

(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part3に続く。