SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

VSS 非対応のゲスト OS を実行している環境での Windows Server バックアップの注意点

leave a comment

Hyper-V 上のゲスト OS に統合サービスをインストールすることで、Windows Server バックアップのバックアップ処理と
ゲスト OS のVSS を連携させ、VSS 対応 OS であればオンラインでバックアップを取得できるようになります。
?image

VSS 非対応 OS のバックアップを取得する場合は、Windows Server バックアップのボリューム シャドウ コピーの処理のタイミングで、
保存状態となり、スナップショットの準備が完了したタイミングで、保存から開始状態に変更されます。
# 下の画像は、Windows Server 2000 SP4 のゲスト OS を格納しているボリュームのバックアップ取得時の画像です。
image

?

■Windows Server バックアップの取得単位

Windows Server 2008 の Windows Server バックアップではバックアップ対象がボリューム単位でした。
image

Windows Server 2008 R2 の Windows Server バックアップではファイル単位でのバックアップが可能となっています。
# [wbadmin.exe] のオプションとして、[-nonRecurseInclude] が使えるようになっています。
image

この機能により、ゲスト OS を格納しているボリュームの一部のファイルだけをバックアップするということが可能となっています。

■ゲスト OS 格納ボリュームの一部のファイルだけバックアップ

Windows Server 2008 R2 で一部のファイルだけバックアップできるのはとても便利なのですが、1 点注意することがあります。

一部のファイルだけ、バックアップを取得した場合でもボリュームに対してのボリューム シャドウ コピーの処理が実行されます。
ここで重要なのがボリューム シャドウ コピーという点です。

ボリューム全体に対して処理がされますので、対象のボリュームに VSS 非対応のゲスト OS が格納され実行している場合は、
ゲスト OS 自身がバックアップ対象として含まれていなくてもゲスト OS がボリューム シャドウ コピーの処理と連携し、
保存状態になってしまいます…。

下の画像で、[EX-2000-TEST] が Windows 2000 Server SP4 のゲスト OS となっています。
ゲスト OS が格納されているディレクトリとは別のディレクトリの特定のファイルをバックアップした場合でも
[EX-2000-TEST] という VSS 非対応のゲスト OS は保存状態となってしまいます。
image

?

VSS 非対応の OS を実行する場合、VSS 対応 OS とは別のボリュームに配置、個別にバックアップを取得する必要のある、
ファイル / ディレクトリとは別のボリュームに配置するといった設計にする必要がありそうですね。

Written by Masayuki.Ozawa

3月 10th, 2010 at 2:19 pm

Posted in Hyper-V

Exchange 2007 を Windows Server 2008 R2 AD DS 環境にインストールする際の注意

leave a comment

Written by Masayuki.Ozawa

3月 6th, 2010 at 12:45 pm

Posted in Exchange

Microsoft 製品のウイルススキャンの除外対象について

2 comments

Microsoft 製品導入の度にウイルススキャンの場外対象を調べていたのですが、一度まとめてみると便利かと思い今週の通勤時間中に少しずつ調べていました。
今日の通勤時間を利用してようやくある程度まとまりましたので投稿。
# Microsoft の技術情報 / Microsoft 社員の方のブログの情報をまとめています。
追加の情報があるたびに都度、更新していければと思っています。
 

■Active Directory (AD / AD DS)

?

■Application Virtualization (App-V)

?

■Enterprise Desktop Virtualization (MED-V)

?

■Exchange Server

?

■Forefront Client Security (FCS)

?

■Identity Manager (ILM / MIIS)

?

■Internet Information Services (IIS)

?

■Operationg System

?

■SharePoint (MOSS / SPS / WSS)

?

■SQL Server

?

■System Center Configuration Manager? (SCCM / SMS)

?

■System Center Data Protection Manager

?

■System Center Operations Manager? (OpsMgr / MOM)

?

■Threat Management Gateway (TMG / ISA)

?

■Virtualization (Hyper-V / Virtual PC / Virtual Server)

■Windows Cluster?(MSCS /?WSFC / WSFC)

Written by Masayuki.Ozawa

3月 6th, 2010 at 9:16 am

Posted in Windows Server

Exchange Server 2007 / 2010 のサイジングツールについて

leave a comment

目下、Exchange 2007 / 2010 の MCP を取得するために勉強中です。
# 2 月に受けようと思っていたのですが、勉強がなかなかはかどらず 3 月にリスケです。
 最近このパターンが多いのできちんと勉強の時間配分を調整しないと駄目ですね。

Exchange Server のサイジングツールについて一度まとめておくと便利かなと思ってまとめてみました。
# 私が Exchange を触りだしたのは 2007 からなので、2007 と 2010 について。
??? 2000 / 2003 は本当に少し触れる程度です。MCSE Messaging も取りたいな~とは思っているのですが。

■Exchange Server 2007 のサイジングツール

HP Sizer for Microsoft Exchange Server 2007
Exchange Server 2007 Storage Cost Calculator
Exchange 2007 Mailbox Server Role Storage Requirements Calculator spreadsheet
System Center Capacity Planner Exchange Server 2007
# System Center Capacity Planner (SCCP) についてはこの投稿を書いている時点ではダウンロードができなくなっていました。

?

■Exchange Server 2010 のサイジングツール

HP Sizer for Microsoft Exchange Server 2010
E2010 Mailbox Server Role Requirements Calculator

サイジングではないですが、Exchange の展開前には以下のツールも便利そうです。
Exchange Deployment Assistant
Exchange Pre-Deployment Analyzer

Exchange Pre-Deployment Analyzer (ExPDA) は英語 OS を実行環境として展開されますので、日本語 OS で
実行する場合には、ExPDA インストール先の [en] ディレクトリの名前を [ja] に変更する必要があります
image

[en] ディレクトリのまま実行すると、

The configuration file C:Program FilesMicrosoftExchange ServerV14ExPDAExPDA.config.xml could not be found.

のエラーメッセージが表示され実行できません。

[en] ディレクトリを [ja] に変更すると実行することができます。
image image

HP Sizer は Exchange 2010 対応されましたが、SCCP もそのうち Exchange 2010 対応されるのでしょうかね??

Written by Masayuki.Ozawa

2月 28th, 2010 at 2:08 pm

Posted in Exchange

Windows 2000 Server → 2003 → 2008 アップグレード時の FSE の注意点

leave a comment

Windows Server フォーラムの Windows Server 2008 のカテゴリに以下の投稿がありました。
Windows2003からwindows2008へアップデートできない(Frontpage 2000が削除できないため)

ちょうど環境を持っていたので本現象について調査をしてみました。

■Windows 2000 Server の初期インストール状態

Windows 2000 Server では、IIS 5.0 が初期状態でインストールされています。
image?

コンポーネントとして、[FrontPage 2000 Serve Extensions] もインストールされています。
image

■Windows Server 2003 アップグレード後の IIS の状況

Windows Server 2003 の初期状態では、IIS はインストールされていないのですが、Winodws 2000 Server の
初期状態からアップグレードした場合は、IIS はアップグレードインストールされた状態となります。
image?

Windows 2000 Server の状態で、[FrontPage 2000 Server Extensions] がインストールされていた場合、
2003 アップグレード後は [FrontPage 2002 Server Extensions] がインストールされた状態になります。

image

■Windows Server 2008 へのアップグレード

それでは、この状態で Windows Server 2008 へアップグレードをしてみます。

image image 

アップグレード時に [FrontPage 2002 Server Extensions] がインストールされていると、[アップグレード] がクリックできず、
インプレースアップグレードをすることができません。
image

現在、IIS の [Web サービス拡張] の設定は以下のようになっています。
image?

[FrontPage Server Extensions] が登録されていますね。
それでは、[FrontPage 2002 Server Extensions] を削除し、再度アップグレードを実行してみたいと思います。
image

[FrontPage 2002 Server Extensions] を削除してもアップグレードをすることができません…。
image

再度、IIS の Web サービス拡張を確認してみます。
image

[FrontPage Server Extensions 2002] は削除されているのですが、[FrontPage Server Extensions] と
[FrontPage Server Extensions 2000] が登録されているままですね。

Windows 2000 Server からアップグレードした場合はこの状況になってしまうみたいですね。

[FrontPage Server Extensions] は [FrontPage Server Extensions 2002] にアップグレードされたサービスのようです。
# [50] のディレクトリは [FrontPage Server Extensions 2002] のディレクトリになります。
image

[FrontPage Server Extensions 2000] は Windows 2000 Server の設定を継承しているようです。
# [40] は [FrontPage Server Extensions 2000] のディレクトリになります。
image

Windows 2000 Server からアップグレードした環境で、[FrontPage Server Extensions 2000] を使用していた場合、
Windows Server 2003 で [FrontPage Server Extensions 2002] を削除しても、2000 からアップグレードした際に
設定された FrontPage Server Extensions の設定は削除されないみたいですね。

?

■アップグレードを実行するためには

この状態でアップグレードを実行させるためには、以下のレジストリキーを削除する必要があります。

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftShared Too
lsWeb Server ExtensionsSetup PackagesWindows 2000]

image?

このレジストリキーを削除するとアップグレードをクリックできるようになります。
image image

ただし、この状態では [FrontPage Server Extensions] が完全に削除されている状態ではありません。
Web サービス拡張が許可の状態になっておりプログラム自体も削除はされていません。

完全に削除するのであれば、IIS の Web サービス拡張で FrontPage Server Extensions を禁止状態に設定。
image

[C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions] から [40] [50] を削除。
image

[C:WINNTSystem32inetsrvMetaBase.xml] から [FrontPage Server Extensions] のエントリを削除。
image? image?

レジストリから、[FrontPage Server Extensions] のエントリを削除。
image

等も実施したほうがよいとは思うのですが、[Windows 2000] のレジストリを削除することで、アップグレードを
実行することが可能となります。

■Windows Server 2008 アップグレード後

[Windows 2000] のレジストリだけを削除して、Windows Server 2008 にアップグレードした場合、IIS 7.0 を
実行すると以下のメッセージが表示されます。
image?
また、各サイトが一通り停止状態になっています。
image
各サイトを起動しようとすると、以下のエラーになってしまい、起動することができません。image

ひとまず、FrontPage Server Extensions 関連の登録を一通り消してみたいと思います。
[ISAPI および CGI の制限] に [FrontPage Server Extensions] が登録されているので一通り削除します。
image  image

[ISAPI フィルタ] にも [fpex.dll] という FrontPage 2000 Server Extensions の ISAPI フィルタが登録されているので、
こちらも削除しておきます。
image? image?

[停止] 状態となっていた、[Windows Process Activation Service] と [World Wide Web Publishing Service] を
[自動] の [開始] 状態に設定します。
image?image?

これで [FrontPage Server Extensions] のメッセージが表示されなくなりました。

?

既に Windows 2000 Server → 2003 へアップグレードした環境を 2008 にアップグレードする場合は、このような
方法を使って、FrontPage Server の設定を削除する必要があるようですが、これからアップグレードをする場合には、
Windows 2000 Server の状態で、FrontPage Server Extensions を削除しておいた方がよさそうです。

追記

Twitter で投稿したことをつぶやいたら、2003 → 2008 アップグレード時の技術情報を教えていただけました。
Windows Server 2003 を Windows Server 2008 にアップグレードしようとすると、エラー メッセージ:「セットアップ上インストールいますが FrontPage サーバー拡張機能がこのコンピューターにサーバーをアップグレードするにはこのコンポーネントをアンインストールする」

Written by Masayuki.Ozawa

2月 28th, 2010 at 9:59 am

Posted in Windows Server

MED-V 1.0 SP1 RC をインストール ? クライアント編 –

leave a comment

サーバーの準備は終わりましたので、続いてはクライアントです。

■クライアントのシステム要件

リリースノートのシステム要件の対応 OS は以下のように記載されています。

Operating System Edition Service Pack System Architecture
Windows XP Professional Edition SP2 or SP3 x86
Windows Vista Business, Enterprise, or Ultimate SP1 or SP2 x86
Windows 7 Professional, Enterprise, or Ultimate None x86 or x64

Windows 7 への対応が大きなところですね。
また、今までは x86 でのみクライアントが動作していたのですが Windows 7 のみ x64 に対応しています。
そのため、インストーラーは x86 / x64 別々のものとなっています。

今回の投稿では Windows 7 Ultimate x64 の VHD ブート環境を使用しています。

?

■ワークスペースで実行可能なゲスト OS

MED-V のワークスペースで実行可能なゲスト OS は以下になります。

Operating System Edition Service Pack System Architecture
Windows 2000 Professional SP4 X86
Windows XP Professional Edition SP2 or SP3 x86

ただしリリースノートでは XP の SP について以下の注釈があります。

SP3 is recommended to ensure that the MED-V workspace will be compatible with future versions of MED-V.

今後を考えると SP2 ではなく、SP3 が推奨されますよね。
XP で動作させる必要があるだけであればゲスト OS は SP3 で構築しておいた方が、MED-V バージョンアップ後もシステム要件を
満たすことができるかと。

?

■Windows 7 に Virtual PC 2007 SP1 をインストール

MED-V 1.0 は Virtual PC 2007 SP1 上で動作します。
これは Windows 7 を使用していても例外ではありません。(MED-V v2 で Windows Virtual PC に対応するようですが。)

MED-V をクライアントで使用するためにはまずは Virtual PC 2007 SP1 をインストールします。
必要なモジュールはダウンロードしたモジュールに含まれています。

  1. [VPC 2007 SP1 x64.exe] を実行します。
    ?image
  2. [次へ] をクリックします。
    image
  3. [使用許諾契約書に同意します] を選択し、[次へ] をクリックします。
    image
  4. [次へ] をクリックします。
    image
  5. [インストール] をクリックします。
    image image
  6. [完了] をクリックします。
    image

通常の Virtual PC 2007 SP1 のインストールですね。
この後に修正モジュールをインストールします。

Virutal PC 用の修正モジュールとして以下の 2 種類がダウンロードファイルに含まれています。

  • KB974918
  • KB979714

両方とも手順は一緒ですので KB974917 のインストール手順のみ記載しておきます。

  1. [KB974918 ? x64.msp] を実行します。
    image
  2. [使用許諾契約書に同意します] を選択し、[次へ] をクリックします。
    imageimage
  3. [完了] をクリックします。
    ?image

同様の作業を [KB979714 ? x64.msp] でも実行します。

これで Virtual PC 2007 SP1 の準備は完了です。

■MED-V クライアントのインストール

続いて MED-V のクライアントをインストールします。

  1. [MED-V_1.0.105.msi] を実行します。
    MED-V 1.0 SP1 RC のクライアントに関しては、x86 / x64 の区別は無いようです。
    拡張子が MSP のファイルに関しては、MED-V 1.0 を実行している場合のアップデートパッケージになります。
    ?image
  2. [Next] をクリックします。
    image
  3. [I accept the terms in the license agreement] を選択して、[Next] をクリックします。
    image
  4. [Next] をクリックします。
    image
  5. インストールする機能と接続先の MED-V サーバーを指定し、[Next] をクリックします。
    今回は管理コンソールも合わせてインストールしています。
    image
  6. [Install] をクリックします。
    image?? image
  7. [Finish] をクリックします。
    image

以上でクライアントのインストールは完了です。

管理コンソールを実行して、サーバーに接続ができました。
image image

続いては本題のワークスペースの起動です。
image

ワークスペースのダウンロードが開始されます。
image

ダウンロードが終了すると Virtual PC を英語表示にするかのメッセージボックスが表示されるので、[Yes] を選択しておきます。
image

ワークスペースの起動が開始されます。
image

ファイアウォールのダイアログが表示されたら、[アクセスを許可する] をクリックします。
image

MED-V のアプリケーションがスタートメニューに追加されているのでさっそく実行してみます。
image

XP の IE を Windows 7 上で起動することができました。

image

Windows 7 で実行する場合も今までの導入方法と変わらないですね。
Windows 7 で実行できると VHD ブートで環境が作れるので、取り回しが楽でいいですね。

Written by Masayuki.Ozawa

2月 25th, 2010 at 12:53 pm

Posted in MDOP

MED-V 1.0 SP1 RC をインストール – サーバー編 –

one comment

MED-V 1.0 SP1 RC を Connect からダウンロードできたのでさっそく触っています。
私がダウンロードできなかったのは、以前 MED-V 1.0 Beta の参加登録をしていたからだったようです。
一度、MED-V 1.0 Beta の参加登録を削除したところ、SP1 RC をダウンロードできるようになりました。

■Windows Server 2008 R2 への対応

さっそく、リリースノートを読んでいたのですが、今まで Windows 7 対応ばかり気を取られていたのですが、
SP1 RC で Windows Server 2008 R2 にも対応されるようです。

[MED-V 1.0 Server Operating System Requirements] に以下の記載がありました。

Operating System Edition Service Pack System Architecture
Windows Server 2008 Standard or Enterprise SP1 or SP2 X86 or x64
Windows Server 2008 R2 Standard or Enterprise None x64

?

?

■アップグレードについて

MED-V 1.0 RTM → SP1 RC へはインプレースアップグレードはできないようで、構成ファイルのバックアップを取得して、
一度アンインストールして、SP1 RC をインストーする形になるようです。

こちらもリリースノートの記載がありました。

Server Upgrade
To upgrade the MED-V 1.0 server to MED-V 1.0 SP1:

  1. Back up the following files that are located in the <InstallDir> / Servers / ConfigurationServer directory:
    1. OrganizationalPolicy.XML
    2. ClientPolicy.XML
    3. WorkspaceKeys.XML
  2. Back up the <InstallDir> / Servers / ServerSettings.xml file.
  3. Uninstall the MED-V 1.0 server.
  4. Install the MED-V 1.0 SP1 server.
  5. Restore the backup files to the appropriate directories.
  6. Restart the MED-V server service.

?

■MED-V Server の入れ替え

それではさっそく MED-V Server を入れ替えてみたいと思います。
まずは、できないとわかっているのですがアップグレードをするとどうなるか。
image
エラーになりますね。必要なファイルをバックアップして、一度アンインストールします。

  1. [プログラムと機能]から、[Microsoft Enterprise Desktop Virtualization (Server)] をアンインストールします。image
  2. [はい] をクリックします。
    imageimage

これでアンインストールは完了です。

それでは、MED-V 1.0 SP1 RC の Server をインストールします。

  1. [MED-V_SERVER_X64_1.0.105.MSI] を実行します。
    ?image
  2. [Next] をクリックします。
    image
  3. [I accept the terms in the license agreement] を選択し、[Next] をクリックします。
    image
  4. [Next] をクリックします。
    image
  5. [Install] をクリックします。
    image
    image
  6. [Finish] をクリックします。
    image

後はバックアップを取得したファイルを上書きして、サービスを再起動します。
image

以上で、MED-V 1.0 SP1 RC Server のインストールは完了です。
2008 R2 に対応しているのでバージョンチェックでもエラーにならずにインストールできました。

次の投稿で Windows 7 にクライアントをインストールしたいと思います。

Written by Masayuki.Ozawa

2月 24th, 2010 at 2:51 pm

Posted in MDOP

MDOP 2010 が TechNet/MSDN で提供開始されました

leave a comment

まだ、英語版だけですが、MDOP 2010 が TechNet/MSDN で提供開始されました。
# VL の方も提供開始されています。

英語版ですので、ダウンロードサイトで言語を [English] に変更する必要があります。

image

MDOP2010 と合わせて、MED-V 1.0 SP1 RC についての情報も。
MDOP 2010 Opens Doors for Faster Windows 7 Deployment
App-V 4.6 RTM and MED-V 1.0 SP1 RC are here!!

RC のため Connect で入手するようですね。
先ほど確認した限りではまだダウンロードができないようだったのですが、ダウンロードできるようになったら試してみたいと思います。

Written by Masayuki.Ozawa

2月 22nd, 2010 at 11:11 pm

Posted in MDOP

Hyper-V 上で実行している Exchange 2010 のバックアップについて

leave a comment

少し動作を確認しておかないといけないなと思い検証をしてみました。

■Windows Server バックアップを使用したゲスト OS のバックアップ取得

Windows Server 2008 / R2 の Windows Server バックアップは VSS に対応しており、ゲスト OS の VSS と連携して、
バックアップを取得することが可能となっています。

VSS の追加方法は以下の KB に記載されています。
Windows Server バックアップを使用して Windows Server 2008 ベースのコンピューターの親パーティションから Hyper-V 仮想マシンをバックアップする方法

本投稿作成時点は、日本語の KB では 2008 無印が対象 OS となっていますが、英語の情報では R2 も対象になっています。
# Fix it も R2 で実行可能です。
How to back up Hyper-V virtual machines from the parent partition on a Windows Server 2008-based computer by using Windows Server Backup

以下が上記の KB の作業を実施していない状態で、[vssadmin list writers] を実行した結果になります。
image

一見 Hyper-V 用の VSS が組み込まれているように見えますが、この状態では回復時にアプリケーションから [Hyper-V] を
選択することができません。
# この状態でもゲスト OS の VSS と連携はできているみたいなんですけどね。
image

KB の Fix it を適用すると回復時にアプリケーションが選択可能です。
image image

?

それでは、ここからが本題になります。

Exchange 2007 SP2 以降では、Windows Server 2008 用の Exchange 用 VSS ライターが追加されています。
このライターは Exchange 2010 でもデフォルトで追加されており、Windows Server バックアップを使用して、
Exchange のメールボックスデータベースをバックアップし、ログの切り捨てができるようになっています。
# 以前投稿した、Exchange 2007 / 2010 のバックアップについて の内容になります。

このライターが導入されたことにより、Hyper-V のホスト OS から Windows Server 2008 で稼働させている Exchange の
バックアップを取得すれば Exchange のメールボックスデータベースのバックアップも連携がされ、ログが切り捨てられるように
なるのではということに気付きました。

直近だと、Exchange 2007 で試しておいた方がよいのですが、ログがある程度たまっている Exchange の環境が 2010 しか
手元になかったため、まずは Exchange 2010 で検証をしてみました。

■バックアップ前のログの状況

最近、バックアップを取得していなかったためかなりログが溜まってしまっていました…。
image

この状態でホスト OS からバックアップを取得してみます。

■ホスト OS からバックアップを取得

今回のゲスト OS は F ドライブに配置しています。
image

そこで、Windows Server バックアップでは F ドライブのバックアップの取得を行います。
image

VSS の設定に関しては、[VSS 完全バックアップ] で設定しています。
image

このバックアップを G ドライブに取得します。
image

■ ゲスト OS で確認

バックアップを進めていると、ゲスト OS のイベントビューアに以下の情報が出力されます。
image image

ホスト OS のバックアップでゲスト OS の Exchange VSS Writer が同期して実行されていますね。
ログのディレクトリを確認してみるとログの切り捨てが行われています。
image

ゲスト OS でバックアップを取得した場合と同じ動作になっていますね。

?

バックアップも正常に完了しました。
image?

時間がある時に Exchange 2007 も同様の動きになるがきちんと確認しておきたいと思います。

Written by Masayuki.Ozawa

2月 21st, 2010 at 3:12 pm

Posted in Exchange

SQL Server の名前付きインスタンスのポート解決について

3 comments

久しぶりに SQL Server の勉強を。今日はインスタンスのポート番号の解決について。

今回は以下の環境を使って検証しています。
ポート番号をいろいろと変更してテストを行っていたので、
?image

?

■SQL Server が使用するポートのデフォルト設定

SQL Server のインスタンスには既定のインスタンスと名前付きインスタンスの 2 種類があります。

初期設定では、既定のインスタンスの場合は、デフォルトで [TCP 1433] が使用され、名前付きインスタンスの場合は、
[動的ポート] となり使用されるポートは固定されません。

既定のインスタンスに接続する場合は [サーバー名] のみ
image

名前付きインスタンスに接続する場合は、[サーバー名インスタンス名] の形式で指定します。
image?

?

■ポートの変更

ポートの設定は、[SQL Server 構成 マネージャ] で設定することができ、デフォルトでは以下の設定となっています。

image

既定のインスタンス

名前付きインスタンス

image image

SQL Server のポート番号は任意に変更することができ、既定のインスタンスを動的ポート、名前付きインスタンスで [1433] を
設定するということもできます。

名前付きインスタンスを [TCP 1433] で動かすと、名前付きインスタンスにサーバー名だけで接続ができるようになったりもします。
下の画像のオブジェクトエクスプローラーでは [SQL-TEST] というサーバー名で接続をしているのですが、[@@servername] を
実行した結果は、[SQL-TESTINSTANCE1] となっています。
image

このようにポート 1433 で実行している SQL Server インスタンスに関しては、サーバー名で接続が可能になります。

■サーバー名だけで接続した際の挙動

Network Monitor を使ってサーバー名だけで接続した場合に使用されるポートを調べてみたいと思います。
SSMS で接続するより、SQLCMD で接続をした場合の方がポートの使用状況がわかりやすかったので、
今回は SQLCMD を使用しながら、挙動を確認していきたいと思います。

接続に使用するコマンドは以下になります。

SQLCMD ?E ?S “SQL-TEST”

この時の接続状況が以下になります。

クライアント [172.23.0.2] からサーバー [172.23.0.1] の [TCP 1433] に対して接続が行われていますね。

?image

サーバー名だけで接続をする場合は、直接 1433 に対して接続をしているのが確認できます。

?

■[サーバー名インスタンス名]で接続した場合の挙動

続いては、[サーバー名インスタンス名] で確認をしてみます。

名前付きインスタンスに接続する場合のコマンドは以下になります。

SQLCMD ?E ?S “SQL-TESTINSTANCE1”

?

この時の Network Monitor の内容が以下になります。

image

現在、[INSTANCE1] の動的ポートでは [TCP 49151] が使用されています。

image

[SQLCMD.EXE] で、172.23.0.2 から、172.23.0.1 のポート [TCP 49151] に接続している個所が、SQL Server に
接続をしている内容になります。

先ほどの既定のインスタンスへの接続と異なる個所としては、[UDP 1434] の通信が発生しているところですね。

この時のフレームサマリーが以下になります。
image

172.23.0.2 から 172.23.0.1 に [UDP 1434] で接続をし、そのあとに 172.23.0.1 の [TCP 49151] に接続をしています。

この時の [UDP 1434] の通信に使用されるサービスが、[SQL Server Browser] サービスになります。
# サーバー名だけの接続では使われないようです。

?

■SQL Server Browser サービスについて

先ほどの内容で [SQL Server Browser] サービスで [UDP 1434] が使用されていると書きました。

[SQL Server Browser] サービスは、SQL Server を起動しているサーバーで実行することのできるサービスになります。
今回の検証では、[SQL-TEST] でサービスが起動しています。
image

タスクマネージャーで確認するとプロセス ID [2896] で起動しているのが確認できますね。
# 32ビットプロセスなんですよね。
image

[netstat] コマンドを使用して、プロセス ID [2896] のポート使用状況を確認してみたいと思います。
使用するコマンドはこちらです。

netstat ?ano | find “2896”

?

実行するとこのような結果が取得できます。
[UDP 1434] がプロセス ID [2896] で実行されていることが確認できますね。
image

このサービスが何をやっているかを確認する場合は、[SQL Server Browser] サービスをサービスではなく、
コンソールモードで起動するとわかりやすいです。

コンソールモードで起動するためには、[SQL Server Browser] サービスを停止して、コマンドプロンプトで
以下のコマンドを実行します。
コンソールモードで起動すると [UDP 1434] に対してのアクセスのログがコンソールに表示されるようになります。

"C:Program Files (x86)Microsoft SQL Server90Sharedsqlbrowser.exe" -c

この状態で再度名前付きインスタンスでの接続をするとコンソールに以下の用に表示されます。
image?

172.23.0.2 から [UDP 1434] に対してアクセスがあったことを確認することができますね。

[SQL Server Browser] サービスは SQL Server のインスタンス名を指定した接続要求時に、インスタンスに対応するポートを
返答する機能になります。
# サーバー名だけで接続した場合は使用されません。そのため、既定のインスタンスのポートを変更した際には、
  SQL Server Browser が使用されないので、接続時にポート番号を指定する必要があります。
特定のインスタンスの接続をする際にポート番号を指定しなかった場合はこの機能を使用して、ポート解決をする必要があります。

下の画像が、[INSTANCE1] 接続時にクライアントから SQL Server の [UDP 1434] に対してアクセスされた際の
ネットワークフレームの情報 (Frame Number 9 の情報) になります。
パースがうまくできなかったので、[Hex Details] をみる必要があるのですが、[instance1] という情報が読み取れますね。
クライアントからサーバーに [instance1] のポート解決に対してのリクエストがされています。
image

次ネットワークフレームの情報 (Frame Number 10 の情報) が SQL Server からクライアントに対してのレスポンスになります。
こちらもパースができなかったので [Hex Details] で確認する必要があるのですが、SQL Server の情報がクライアントに渡されています。
この中にポート番号 (49195) が入っているのが確認できますね。
image

[SQL Server Browser] サーバーは、インスタンス名が指定されており、ポート番号が指定されていない場合に使用されます。
そのため、インスタンス名を指定していても、ポート番号を指定している場合は使用されません。
# [UDP 1434] にたいしてアクセスがされません。

ポート番号を指定する場合は以下のコマンドになります。

SQLCMD ?E ?S “SQL-TESTINSTANCE1,49195”

?

この場合の Network Monitor の取得内容が以下になるのですが、指定したポートに直接接続がされており、[UDP 1434] の
通信は発生していません。
image

普段何気なく使用している、[サーバー名インスタンス名] の接続ですがきちんと調べると勉強になります。

Written by Masayuki.Ozawa

2月 21st, 2010 at 7:48 am

Posted in SQL Server