SQLServer2005の無償版であるExpress版ではAgentサービスが実装されていないため管理ツールSQLServer Management Studio(Express)からメンテナンス機能が使えない。
よってタスクメニューから手動でのバックアップはできても自動で(定期的に)バックアップを行うことができない。そのためどうしてもWindowsのタスク機能を使ってバッチ処理などで実行させる必要がある。
事例:
SQLServerインスタンス:SQLEXPRESS
データベース名:testdb
SQLServer認証ユーザー名:sa、同パスワード:pass
バックアップ保存先フォルダ:C:\sqlback
用意するのは2つのファイル(ファイル名は任意)
これをバックアップ保存先フォルダに配置する
1.バックアップ命令文(SQL):backup.sql
BACKUP DATABASE testdb TO DISK='C:\sqlback\testdb.bak' WITH INIT
GO
※解説
@DISK=''でバックアップファイルを指定したパスに保存
AWITH INIT の文が無いと、バックアップデータが毎回追加されてtestdb.bakが大きくなってしまう。この文を付けることで上書きモードになる。
2.バッチファイル(BAT):backup.bat
sqlcmd -S .\SQLEXPRESS -U sa -P pass -i C:\sqlback\backup.sql > C:\sqlback\backup.log
※解説
sqlcmdの詳細はサイトで確認
@-S はサーバー名(インスタンス名含)
A-U はログイン名
B-P はログインパスワード
注:-U -P はSQLServer認証の場合に必要だが、Windows認証の場合は -E だけになる(下参照)
例:sqlcmd -S .\SQLEXPRESS -E -i C:\sqlback\backup.sql
C-i は実行するSQLのファイル名
D > 以下は無くても良いがログを残したい時に使う
あとはWindowsのタスクでバッチファイルbackup.batを指定すれば良い。
今回は毎日指定された時刻に行う予定で作成したので、前日以前のバックアップは保存されない。
1週間分バックアップを保存したい場合には、曜日毎に別々のSQLとバッチファイルを用意してタスクに登録すれば良い。
2009年11月06日
2009年11月05日
アップロード可能なファイルサイズの上限変更
FileUploadコントロールを使ってWebサーバにファイルをアップロードさせるときファイルサイズの上限があることをご存知だろうか?
そんなことを何も意識せず普通に使った場合(Web.Config等に何も指定していない場合)では、上限初期値が4MBになっている。これを超えるとエラーになる。
最初はサイズが原因だとは思わなかったが、どうやらそうらしい。
設定変更はWeb.Configで行う。
system.web要素に次の項目を追加する。
<httpRuntime executionTimeout="600" maxRequestLength="40960"/>
executionTimeout:実行タイムアウト(秒)初期値110
maxRequestLength:リクエストデータ最大サイズ(KB)初期値4096(=4MB)
※location要素と組合せて必要なページのみ指定できるそうだが私は確認していない。
そんなことを何も意識せず普通に使った場合(Web.Config等に何も指定していない場合)では、上限初期値が4MBになっている。これを超えるとエラーになる。
最初はサイズが原因だとは思わなかったが、どうやらそうらしい。
設定変更はWeb.Configで行う。
system.web要素に次の項目を追加する。
<httpRuntime executionTimeout="600" maxRequestLength="40960"/>
executionTimeout:実行タイムアウト(秒)初期値110
maxRequestLength:リクエストデータ最大サイズ(KB)初期値4096(=4MB)
※location要素と組合せて必要なページのみ指定できるそうだが私は確認していない。
2009年09月03日
チェックボックス、ラジオボタンを大きく表示して使う:その2
以前掲載した「チェックボックス、ラジオボタンを大きく表示して使う」では、WebコントロールのCheckBoxやRadioButtonでは大きく表示できないためHTMLコントロールを使う方法を紹介しました。
それに対してコメントを寄せてくれた蒼い音速鼠さんの情報によりWebコントロールでも可能なことが判り、また前回のサンプルソースではIE8に対応できない問題も解決することができました。
そこで改正版サンプルを作成しましたので紹介します。
bigctrsamp2.lzh(24KB)
・Default.aspx: HTMLコントロールによるサンプル
・Default2.aspx: Webコントロールによるサンプル
Webコントロールでサイズを変更するにはInputAttributesプロパティでスタイルの設定を行えば良いこと。
IE8でも有効にするにはスタイルにborder:noneやborder-width:1pxを加えれば良いことが判りました。
蒼い音速鼠さんありがとうございました。
それに対してコメントを寄せてくれた蒼い音速鼠さんの情報によりWebコントロールでも可能なことが判り、また前回のサンプルソースではIE8に対応できない問題も解決することができました。
そこで改正版サンプルを作成しましたので紹介します。
bigctrsamp2.lzh(24KB)
・Default.aspx: HTMLコントロールによるサンプル
・Default2.aspx: Webコントロールによるサンプル
Webコントロールでサイズを変更するにはInputAttributesプロパティでスタイルの設定を行えば良いこと。
IE8でも有効にするにはスタイルにborder:noneやborder-width:1pxを加えれば良いことが判りました。
蒼い音速鼠さんありがとうございました。
2009年06月06日
サービスプログラムのデバッグ方法(Visual Studio 2005)
Windowsサービスを作成したが、動作がおかしいのでデバッグすることになった。
その時のデバッグ操作が結構てこずったので注意書きとしてまとめておく。
デバッグの方法はWindowsプログラムとはちょっと違う。WindowsプログラムではDebugモードで実行させるだけで済むがサービスプログラムは実際にサービスとして稼動させてから開発ツールでそのプロセスを監視させて行う。
ここで注意すべきなのはWindowsプログラムと同様にビルドの構成をDebugにしておく必要があることだ。(過去ログ:ブレークポイントで止まらないを参照)
サービスプログラムを実行させるには
(Windows)\Microsoft.NET\Framework\(バージョン)\installutil.exe を使ってインストールする必要がある。コマンドプロンプトから実行するので私の場合は、このコマンドだけをサービスプログラムの実行ファイル(exe)のあるフォルダ(bin\debug)にコピーして、そこからインストールしている。
InstallUtil.exe (サービスプログラム名).exe
※Vistaの場合コマンドプロンプトを管理者として実行させておかないとインストールに失敗する。
インストール後、サービスがまだ開始されていないのでコントロールパネルの管理ツールからサービスマネージャを開いて開始させる。
あとはデバッグポイントを設定し、「ツール」メニューにある「プロセスにアタッチ」を開き「選択可能なプロセス」から当サービスプログラムを選択し「アタッチ」ボタンをクリックする。このとき「すべてのユーザーからのプロセスを表示する」と「すべてのセッションのプロセスを表示する」にチェックを入れておかないとサービスプログラムは表示されない。
プロセス一覧には(プログラム名).vshost.exeというファイル名がグレー表示しているが、これはサービスプログラムのプロジェクトを開いている開発ツールのことだ。
なお、上記手順から判るようにサービスプログラムの起動時(OnStartイベント)のデバッグは出来ない。(開始されていないサービスは選択可能なプロセス一覧には表示されず、表示されたときは既にOnStart内のコードは終了しているから)
デバッグで問題点が見つかり修正する場合、一時サービスを停止しておかないとプログラムの置き換えができない。またサービスをアンインストールするときも停止する必要がある。
アンインストールのコマンド以下の通り
InstallUtil.exe /u (サービスプログラム名).exe
その時のデバッグ操作が結構てこずったので注意書きとしてまとめておく。
デバッグの方法はWindowsプログラムとはちょっと違う。WindowsプログラムではDebugモードで実行させるだけで済むがサービスプログラムは実際にサービスとして稼動させてから開発ツールでそのプロセスを監視させて行う。
ここで注意すべきなのはWindowsプログラムと同様にビルドの構成をDebugにしておく必要があることだ。(過去ログ:ブレークポイントで止まらないを参照)
サービスプログラムを実行させるには
(Windows)\Microsoft.NET\Framework\(バージョン)\installutil.exe を使ってインストールする必要がある。コマンドプロンプトから実行するので私の場合は、このコマンドだけをサービスプログラムの実行ファイル(exe)のあるフォルダ(bin\debug)にコピーして、そこからインストールしている。
InstallUtil.exe (サービスプログラム名).exe
※Vistaの場合コマンドプロンプトを管理者として実行させておかないとインストールに失敗する。
インストール後、サービスがまだ開始されていないのでコントロールパネルの管理ツールからサービスマネージャを開いて開始させる。
あとはデバッグポイントを設定し、「ツール」メニューにある「プロセスにアタッチ」を開き「選択可能なプロセス」から当サービスプログラムを選択し「アタッチ」ボタンをクリックする。このとき「すべてのユーザーからのプロセスを表示する」と「すべてのセッションのプロセスを表示する」にチェックを入れておかないとサービスプログラムは表示されない。
プロセス一覧には(プログラム名).vshost.exeというファイル名がグレー表示しているが、これはサービスプログラムのプロジェクトを開いている開発ツールのことだ。
なお、上記手順から判るようにサービスプログラムの起動時(OnStartイベント)のデバッグは出来ない。(開始されていないサービスは選択可能なプロセス一覧には表示されず、表示されたときは既にOnStart内のコードは終了しているから)
デバッグで問題点が見つかり修正する場合、一時サービスを停止しておかないとプログラムの置き換えができない。またサービスをアンインストールするときも停止する必要がある。
アンインストールのコマンド以下の通り
InstallUtil.exe /u (サービスプログラム名).exe
2009年05月07日
Windows7の「Windows XP Mode」
Windows7のRC版の公開のアナウンスと共に興味深い記事があった。
それが「Windows XP Mode」と呼ばれるものだ。これはWindows7とは別に提供される。
http://www.microsoft.com/windows/virtual-pc/download.aspx
アナウンスでは「Professional」「Enterprise」「Ultimate」エディションでしか使えないらしい。RC版はUltimateだから試すことができる。
「Windows XP Mode」の実体は、別途起動させた「Virtual PC」 から特定のアプリケーションだけを表示させて、あたかもWindows7で起動しているかのように見せるものである。
ちなみに、ウィンドウデザインはXPそのままなので、Vista以降の新しいインターフェースのウィンドウに混じって表示されると変な感じがするが、XP Modeで起動しているのが一目でわかる。
この新しい「Virtual PC」を使うには幾つか制限がある。
まず一番の障害になると思われるのは、プロセッサー(CPU)で「ハードウェア依存の仮想化機能」がないと使用できないことである。最近のCPU(AMDのAMD-VやIntelのIntel-VTが組み込まれたCPU)でないと使えない。ちなみに私がテストしたのはAMDのAthlon 64X2である。
・非対応のCPUだと下図のようなエラーが出る。

またWindows7から起動させるためには、あらかじめ作成したVirtualXPにプログラムをインストールする必要があるが、必ず全ユーザー用のスタートメニューのプログラムフォルダにショートカットを作成しないといけない。
インストーラーが自動で作る場合なら楽だがフリーソフトなどインストーラが無い場合、またあってもログインユーザーだけのプログラムフォルダに作成するものだと、自前で作らないといけない。
・下図参照

スタートメニューの「Virtual Windows XP」フォルダに「Virtual Windows XP アプリケーション」フォルダが作成され、その中にショートカットがあるが、これはVirtual Windows XP の「C:\Documents and Settigns\All Users\スタート メニュー\プログラム」フォルダ内に新規作成されたショートカットが表示されたものだ。
もう一つの制限は、起動元がVirtualPCなので読み書きするドライブもVirtual PC上にあるドライブになることだ。VirtualPC側でホスト側(Windows7)OSのドライブを仮想化してドライブに割り当てることができるが、ホスト側と同じドライブ名にはならないし、ドキュメントフォルダも異なる。 (これは間違いで、マイドキュメント、マイピクチャーに保存するとホスト側のマイドキュメント、マイピクチャーに保存された。どうやらリダイレクトされているようだ。)
アプリケーションが単独で動作し、他の影響を受けないような場合には使えるだろうが、外部と連携したりする場合には使えない問題がある。
また当然ながらキャプチャーソフトなどは全く使い物にならない。
Windows7で起動しているように見えても、実体はVirtualXP上にあるのでキャプチャーしている画面空間が見えているものと異なっているのだ。
・下図参照
自作ソフト「ScreenCutter」がキャプチャーしたのはWindows7のデスクトップではなくVirtualPC上のデスクトップらしき一部である。
クリップボードの内容はホスト側と共有するのでホスト側でコピーしたものはVirtual側にも伝わるが、Virtual側のクリップボード取得では意味がない。
以上の点から「Virtual XP mode」は、あくまでもVirtual PCであり、仮想PC上にインストールしたアプリケーションをちょっと楽に起動できるようにしただけのものだ。Windows7で互換モードで起動したものではない。だからシステムに関わるようなツール、たとえばアンチウィルスソフト等をこのXPモードで使うことはナンセンスなのだ。
なお、試用したものはベータ版であり、正規版までにどう改善されるかも注目しておこう。
補足:
従来のVirtualPCとの違いを言うと、単独のVirtualPC2007とも違う。
というのも、「終了」の代わりに「切断」ボタンがある。つまりVirtualPCにリモートデスクトップで接続しているという感じなのである。
他にUSBメモリが使えるようになったのは良いが、Virtual側で使うとホスト側から使用できなくなるのは改善して欲しい。
それが「Windows XP Mode」と呼ばれるものだ。これはWindows7とは別に提供される。
http://www.microsoft.com/windows/virtual-pc/download.aspx
アナウンスでは「Professional」「Enterprise」「Ultimate」エディションでしか使えないらしい。RC版はUltimateだから試すことができる。
「Windows XP Mode」の実体は、別途起動させた「Virtual PC」 から特定のアプリケーションだけを表示させて、あたかもWindows7で起動しているかのように見せるものである。
ちなみに、ウィンドウデザインはXPそのままなので、Vista以降の新しいインターフェースのウィンドウに混じって表示されると変な感じがするが、XP Modeで起動しているのが一目でわかる。
この新しい「Virtual PC」を使うには幾つか制限がある。
まず一番の障害になると思われるのは、プロセッサー(CPU)で「ハードウェア依存の仮想化機能」がないと使用できないことである。最近のCPU(AMDのAMD-VやIntelのIntel-VTが組み込まれたCPU)でないと使えない。ちなみに私がテストしたのはAMDのAthlon 64X2である。
・非対応のCPUだと下図のようなエラーが出る。
またWindows7から起動させるためには、あらかじめ作成したVirtualXPにプログラムをインストールする必要があるが、必ず全ユーザー用のスタートメニューのプログラムフォルダにショートカットを作成しないといけない。
インストーラーが自動で作る場合なら楽だがフリーソフトなどインストーラが無い場合、またあってもログインユーザーだけのプログラムフォルダに作成するものだと、自前で作らないといけない。
・下図参照
スタートメニューの「Virtual Windows XP」フォルダに「Virtual Windows XP アプリケーション」フォルダが作成され、その中にショートカットがあるが、これはVirtual Windows XP の「C:\Documents and Settigns\All Users\スタート メニュー\プログラム」フォルダ内に新規作成されたショートカットが表示されたものだ。
もう一つの制限は、起動元がVirtualPCなので読み書きするドライブもVirtual PC上にあるドライブになることだ。VirtualPC側でホスト側(Windows7)OSのドライブを仮想化してドライブに割り当てることができるが、ホスト側と同じドライブ名にはならないし、
アプリケーションが単独で動作し、他の影響を受けないような場合には使えるだろうが、外部と連携したりする場合には使えない問題がある。
また当然ながらキャプチャーソフトなどは全く使い物にならない。
Windows7で起動しているように見えても、実体はVirtualXP上にあるのでキャプチャーしている画面空間が見えているものと異なっているのだ。
・下図参照
自作ソフト「ScreenCutter」がキャプチャーしたのはWindows7のデスクトップではなくVirtualPC上のデスクトップらしき一部である。
クリップボードの内容はホスト側と共有するのでホスト側でコピーしたものはVirtual側にも伝わるが、Virtual側のクリップボード取得では意味がない。
以上の点から「Virtual XP mode」は、あくまでもVirtual PCであり、仮想PC上にインストールしたアプリケーションをちょっと楽に起動できるようにしただけのものだ。Windows7で互換モードで起動したものではない。だからシステムに関わるようなツール、たとえばアンチウィルスソフト等をこのXPモードで使うことはナンセンスなのだ。
なお、試用したものはベータ版であり、正規版までにどう改善されるかも注目しておこう。
補足:
従来のVirtualPCとの違いを言うと、単独のVirtualPC2007とも違う。
というのも、「終了」の代わりに「切断」ボタンがある。つまりVirtualPCにリモートデスクトップで接続しているという感じなのである。
他にUSBメモリが使えるようになったのは良いが、Virtual側で使うとホスト側から使用できなくなるのは改善して欲しい。
Windows7 RC版をインストール
Windows7のRC版がダウンロードできるようになった。
http://www.microsoft.com/windows/windows-7/download.aspx
http://technet.microsoft.com/ja-jp/evalcenter/dd353205.aspx?ITPID=mscomsc
試してみたが見た目は、前回のベータ版と比べてインストール時の画面が綺麗になり、日本語表記も増えている程度である。
今回の目玉は「Windows XP Mode」というVirtual PCの機能を使った新たな互換性機能がどうなったかということだが、これは別途ダウンロードする必要がある。
http://www.microsoft.com/windows/virtual-pc/download.aspx
これについては次回に解説する。




http://www.microsoft.com/windows/windows-7/download.aspx
http://technet.microsoft.com/ja-jp/evalcenter/dd353205.aspx?ITPID=mscomsc
試してみたが見た目は、前回のベータ版と比べてインストール時の画面が綺麗になり、日本語表記も増えている程度である。
今回の目玉は「Windows XP Mode」というVirtual PCの機能を使った新たな互換性機能がどうなったかということだが、これは別途ダウンロードする必要がある。
http://www.microsoft.com/windows/virtual-pc/download.aspx
これについては次回に解説する。
2009年04月21日
VB2005(VB.NET)のNotifyIconからのフォーム表示の問題点
タスクトレイにアイコンを表示させる時、VB6の時はかなり面倒な処理をする必要があったが、VB.NETではNotifyIconコントロールという大変便利なものがある。
今回これを使ったプログラムを作っていて問題が見つかった。
それは、タスクトレイに表示されたアイコンをクリックしてフォームを開くとき、そのままではアクティブになっていないのである。
たとえば、パスワードを入力させるためにパスワード用フォームを開いてもキー入力を受け付けないのである。一回フォームをクリックしてアクティブにしてからでないとキー入力できないというのでは使い勝手が悪い。これが別のフォーム上のButtonコントロールから開くときにはちゃんとアクティブになっているのだから始末が悪い。
何とかアクティブにならないかと悪戦苦闘してみたが100%確実にアクティブにする方法が見つからない。
ところがやっと見つかった解決策は実に単純だった。
フォームのLoadイベントのなかで、Me.Activate() と一行追加するだけで解決した。
やれやれ(^^;
今回これを使ったプログラムを作っていて問題が見つかった。
それは、タスクトレイに表示されたアイコンをクリックしてフォームを開くとき、そのままではアクティブになっていないのである。
たとえば、パスワードを入力させるためにパスワード用フォームを開いてもキー入力を受け付けないのである。一回フォームをクリックしてアクティブにしてからでないとキー入力できないというのでは使い勝手が悪い。これが別のフォーム上のButtonコントロールから開くときにはちゃんとアクティブになっているのだから始末が悪い。
何とかアクティブにならないかと悪戦苦闘してみたが100%確実にアクティブにする方法が見つからない。
ところがやっと見つかった解決策は実に単純だった。
フォームのLoadイベントのなかで、Me.Activate() と一行追加するだけで解決した。
やれやれ(^^;
2009年04月15日
アプリケーション情報(VB6とVB2005)
| アプリ情報 | VB6 | VB2005 |
|---|---|---|
| 実行パス | App.Path | My.Application.Info.DirectoryPath |
| 実行ファイル名 (拡張子を除く) | App.EXEName | My.Application.Info.AssemblyName |
| メジャー番号 | App.Major | My.Application.Info.Version.Major |
| マイナー番号 | App.Minor | My.Application.Info.Version.Minor |
| ビルド番号 | (該当無し) | My.Application.Info.Version.Build |
| リビジョン番号 | App.Revision | My.Application.Info.Version.Revision |
| バージョンの構成 | (Major.Minor.0.Revision) | (Major.Minor.Build.Revision) |
| タイトル | App.Title | My.Application.Info.Title |
| ファイルの説明 | App.FileDescription | |
| 会社名 | App.CompanyName | My.Application.Info.CompanyName |
| コメント | App.Comments | My.Application.Info.Description |
| ヘルプファイル名 | App.HelpFile | (該当無し) |
| 著作権情報 | App.LegalCopyright | My.Application.Info.Copyright |
| 商標 | App.LegalTrademarks | My.Application.Info.Trademark |
※バージョン情報については、こちらも参考に→「自アプリケーションのバージョンを取得」
2009年03月27日
デフォルトボタンの指定方法
VB6では、Enterキーを押すと自動で応答するボタンをDefaultプロパティをTrueにすることで指定できた。
VB.NET(2005,2008含)になってその方法が変わり、フォームのAcceptButtonプロパティでボタンの名前を指定する。


同様にESCキーに応答させるVB6のボタンのCancelプロパティは、VB.NETではフォームのCancelButtonプロパティになる。
VB.NET(2005,2008含)になってその方法が変わり、フォームのAcceptButtonプロパティでボタンの名前を指定する。
VB6のサンプル画面
VB6:
Private Sub Text1_Change()
If Text1.Text = "" Then
Command1.Default = False
Else
Command1.Default = True
End If
End Sub
VB2008のサンプル画面
VB.NET:
Private Sub TextBox1_TextChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text = "" Then
Me.AcceptButton = Nothing
Else
Me.AcceptButton = Button1
End If
End Sub
同様にESCキーに応答させるVB6のボタンのCancelプロパティは、VB.NETではフォームのCancelButtonプロパティになる。
2009年03月25日
SQL Server Browserの使い道
SQLServer2005Expressをインストールすると本体(SQLServer)と一緒にSQLServerBrowserがサービスに組み込まれるが、これまで全く使っていなかった。
既定でも無効になっているのでどういう使い道があるのか知らなかった。
たまたま仕事でAccessデータベースをSQLServerに移行させる必要があり、サーバ機を用意するほどの予算もないので既存のXPマシンにExpress版をインストールして使うことになったとき、ODBC経由でネットワーク接続しようとしてODBCデータソースが作成できなかったことから調べていって判ったことである。
通常SQLServerのTCPポートは1433番固定なのだが、Express版は動的ポートが採用されている(今回初めて知った)。
そこでリモートから接続しようとするときどのポートに接続したらいいのか調べる必要があるが、それを行ってくれるのがSQL Server Browserというのである。
またXP(sp2適用)ではファイヤーウォールが有効になっているため、外部からSQLServerサービスとSQLServerBrowserサービスに接続するには、必要なポートを開ける必要がある。
実のところこれまではデータベースサーバとしてWindowsServer2003を使っていた。2003ではファイヤーウォールは既定では無効になっていたので意識する必要がなかったのだ。
固定ポートを使用していればファイヤーウォールの設定はそのポート番号を許可させるだけでよいが動的ポートの場合にはそれができない。
そこでサービスプログラム本体(sqlserver.exe)を許可させたあと、SQLServerBrowserサービスを使ってインスタンス名からポート番号を探る必要がるので、こちらも許可させる必要がある。なお、こちらはUDPの1434番(固定)を指定するか、sqlbrowser.exeを指定する。
詳しいことは下のサイトに紹介されている。
http://www.atmarkit.co.jp/fdotnet/dotnettips/545sqlsvrnet/sqlsvrnet.html
なお、余談だが今回Access2000のデータベースをSQLServer2005Express版に移行するのにAccess2000のアップサイジングウィザードを使ったところ「オーバーフロー」のエラーが発生した。この原因を調べたところAccess2000のバグのようでOffice2000ServicePack3を当てることで正常に変換できた。
既定でも無効になっているのでどういう使い道があるのか知らなかった。
たまたま仕事でAccessデータベースをSQLServerに移行させる必要があり、サーバ機を用意するほどの予算もないので既存のXPマシンにExpress版をインストールして使うことになったとき、ODBC経由でネットワーク接続しようとしてODBCデータソースが作成できなかったことから調べていって判ったことである。
通常SQLServerのTCPポートは1433番固定なのだが、Express版は動的ポートが採用されている(今回初めて知った)。
そこでリモートから接続しようとするときどのポートに接続したらいいのか調べる必要があるが、それを行ってくれるのがSQL Server Browserというのである。
またXP(sp2適用)ではファイヤーウォールが有効になっているため、外部からSQLServerサービスとSQLServerBrowserサービスに接続するには、必要なポートを開ける必要がある。
実のところこれまではデータベースサーバとしてWindowsServer2003を使っていた。2003ではファイヤーウォールは既定では無効になっていたので意識する必要がなかったのだ。
固定ポートを使用していればファイヤーウォールの設定はそのポート番号を許可させるだけでよいが動的ポートの場合にはそれができない。
そこでサービスプログラム本体(sqlserver.exe)を許可させたあと、SQLServerBrowserサービスを使ってインスタンス名からポート番号を探る必要がるので、こちらも許可させる必要がある。なお、こちらはUDPの1434番(固定)を指定するか、sqlbrowser.exeを指定する。
詳しいことは下のサイトに紹介されている。
http://www.atmarkit.co.jp/fdotnet/dotnettips/545sqlsvrnet/sqlsvrnet.html
なお、余談だが今回Access2000のデータベースをSQLServer2005Express版に移行するのにAccess2000のアップサイジングウィザードを使ったところ「オーバーフロー」のエラーが発生した。この原因を調べたところAccess2000のバグのようでOffice2000ServicePack3を当てることで正常に変換できた。

