SE の雑記

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

Author Archive

SQL Azure の統計情報関連で使用できる T-SQL について

one comment

Tech・Ed で Azure コミュニティの話もあるので最近は SQL Azure の勉強などをちょくちょくしています。

今日は SQL Azure の統計情報関連で使用できる T-SQL について調べてみました。
以下の技術情報を元にしています。
Transact-SQL Reference (SQL Azure Database)

?

■システム関数

STATS_DATE テーブルまたはインデックス付きビューの統計の最終更新日を返します。

?

■システムストアドプロシージャ

sp_autostats インデックス、統計オブジェクト、テーブル、またはインデックス付きビューの自動統計更新オプション (AUTO_UPDATE_STATISTICS) を表示または変更します。
sp_createstats CREATE STATISTICS ステートメントを呼び出して、統計オブジェクトの最初の列になっていない列の統計を 1 列ずつ作成します。
sp_helpstats 指定したテーブルの列およびインデックスに関する統計を返します
sp_statistics 指定したテーブルまたはインデックス付きビュー上にあるすべてのインデックスおよび統計の一覧を返します。
sp_updatestats 現在のデータベース内にあるすべてのユーザー定義テーブルと内部テーブルに対して UPDATE STATISTICS を実行します。

?

■システムビュー

sys.stats U、V、または TF 型の表形式オブジェクトの統計ごとに 1 行のデータを保持します。
sys.stats_columns sys.stats 統計の一部である列ごとに 1 行のデータを保持します。

?

■T-SQL ステートメント

CREATE STATISTICS テーブルまたはインデックス付きビューの 1 つまたは複数の列で、クエリの最適化に関する統計 (フィルター選択された統計情報を含む) を作成します。
DBCC SHOW_STATISTICS テーブルまたはインデックス付きビューについての、現在のクエリの最適化に関する統計を表示します。
DROP STATISTICS 現在のデータベースの指定されたテーブル内で、複数のコレクションの統計を削除します。

?

■データベースプロパティ (DATABASEPROPERTYEX)

IsAutoCreateStatistics 初期値:1 (TRUE) クエリのパフォーマンスを向上させるために、クエリ オプティマイザーが必要に応じて 1 列ずつの統計を作成します。
IsAutoUpdateStatistics 初期値:1 (TRUE) クエリで使用される既存の統計が古くなっている可能性がある場合、クエリ オプティマイザーによって更新されます。

?

統計情報関連としてはこれらを利用することが可能となっているようです。

STATS_DATE 関数が使えるので、統計情報が更新されたタイミングがわかるかな~と思ったのですが、SQL Azure では、NULL に
なってしまって更新日がうまく取得できませんでした…。
統計情報の自動更新はデフォルトで有効になっているのですが、データのサイズによっては実データとの乖離が発生する可能性が
ありますので、統計情報がいつ更新されたかが取得できるとデータベース管理者としてはうれしいのですけども。

SQL Azure も SQL Server 2008 R2 とベースは同じですので、最適なクエリの実行プランを選択するためには
統計情報は重要になってくると思いますので必要に応じた定期的な統計情報のメンテナンスは実施する必要があります。

SQL Azure には SQL Server Agent サービスがないので、SQL Azure 以外の機能で定期的にメンテナンスする必要がありますが。
# 開発をやらないのでこの辺のスキルが薄い…。

こういう情報調べるのって楽しいです♪

Written by Masayuki.Ozawa

8月 21st, 2010 at 2:09 pm

Posted in SQL Server

ただいま Tech・Ed Japan 2010 参加予定セッション検討中

leave a comment

Tech・Ed Japan 2010 の開催まであと一週間を切りました。
ぼちぼち参加予定セッションの検討などを。
# いまだに決まっていないのです…。

■1 日目

10:30 – 12:00 Keynote
12:25 – 13:15 Windows Azure スペシャル セッション
13:45 – 14:55 T2-301 : ついに登場! RemoteFX で実現する強化された MS VDI のアーキテクチャ
15:20 – 16:30 H-321 : Windows Azure アプリケーション開発体験 ? Windows Azure 管理/監視編 ?
16:55 – 18:05 TH-203 : 都市伝説のウソを暴く ? みんなで語ろう SQL Server の真実を ?
18:05 – 19:30 Attendee Party

?

■2 日目

9:20 – 10:30 TH-304 : (リピート) SQL Server 2008 R2 Parallel Data Warehouse Edition の特徴 ? 超並列の威?を?撃せよ!! ?
or
T4-305 : スケールしないシステムにおける開発者の過ち ? SQL Server の場合 ?
10:55 – 12:05 T1-301 : 企業内 PC の運?を変える Windows Intune
13:45 – 14:55 T3-307 : System Center Virtual Machine Manager 2008 R2 の徹底活??法
15:20 – 16:30 TH-403 : SQL Server 現役サポートエンジニア直伝 ? SQL Server トラブル シューティング実践編 ?
16:55 – 18:05 T4-401 : SQL Server による?規模 Mission Critical システムの展開
or
BOF-07 : Windows Platform による組み込み機器とサービス連携
18:30 – 19:40 T3-301 : Data Protection Manager 2010 を活?した Hyper-V のバックアップ
or
LT-02 : ライトニング トーク

?

■3 日目

9:20 – 10:30 T2-402 : あなたの Hyper-V 環境を最?限使い切る?法 ? Hyper-V 設定にまつわる Tips ?
10:55 – 12:05 T4-301 : プライベート クラウドでの SQL Server の展開 ? Hyper-V との Better Together ?
or
T2-304 : App-V/MED-V で実現する最新デスクトップ環境の構築?法 ? クライアントサイドの仮想化技術 ?
or
H-305 : Communications Server "14" サーバー インストールと管理
12:05 – 13:45 PeerTalk Lunch
13:45 – 14:55 T5-306 : SharePoint 2010 & Offi ce 2010 開発レシピ
or
T2-302 : プライベート クラウド構築講座 ? 無償ツール System Center Virtual Machine Manager Self-Service Portal 2.0 と共に ?
15:20 – 16:30 T5-403 : Exchange Server 2007/2010 のトラブルシュート Tips
or
T2-303 : Microsoft VDI の実践 ? 構築?法のポイントと活?ノウハウ ?
or
H-312 : System Center Operations Manager 2007 R2 のユーザー視点による監視
16:55-18:05 T2-401 😕 Effective Hyper-V R2 SP1 ? 詳説 Dynamic Memory ?
or
TH-303 : SQL Server と Oracle Database との?較 ? 都市伝説に書かれるほど劣っているのか!? ?

?

このような予定でセッションに参加しようかな~と思っています。

セッションルームで、FMV-BIBLO LOOX U/B50 を使っている人がいたら私かもしれませんw
# ブログ用のセミナーレポート必死で作っていると思います。

当日まで、セッション資料をみてじっくり悩みたいと思います。
どのセッションに参加しようか悩むのも Tech・Ed の楽しみですよね。

Written by Masayuki.Ozawa

8月 21st, 2010 at 8:21 am

Posted in セミナー

256 MB の GPU 搭載サーバーでRemoteFX が有効なゲスト OS は何台起動できるか。

leave a comment

検証環境の一台には RemoteFX を検証するために 256 MB の GPU を搭載しています。
以下が、GPU-Z というツールで取得した GPU の情報になります。
image
この環境で何台 RemoteFX 3D ビデオアダプターが有効になっているゲスト OS を起動できるかを試してみました。
結論から言ってしまいますと 1 ~ 3 台起動することが可能です。
RemoteFX 3D ビデオアダプターの技術情報として以下の情報があります。
Hardware Considerations for RemoteFX
この情報の中に、解像度と使用するモニター数の設定による必要となるメモリについての記載があります。
RemoteFX 3D ビデオアダプターで使用される GPU のメモリですが、解像度とモニター数に依存するようです。
RemoteFX 3D ビデオアダプターを追加した直後のデフォルトの状態では、
[モニターの最大数][1]
[モニターの最大解像度][1280 × 1024]
となります。
image
この状態ですと、[125 MB] のメモリが消費されることになります。
[125 MB × 2 = 250 MB] ではありますが、GPU に搭載しているメモリがフルに使えるかといわれるとそうでもないはずですので、
この状態では 1 台までRemoteFX 3D ビデオアダプターが有効になっているゲスト OS を起動することが可能です。
2 台目を起動しようとすると GPU のメモリが不足して以下のエラーになります。
image
[モニターの最大数][1]
[モニターの最大解像度][1024 × 768]

の場合は、使用されるメモリは [75 MB] となりますので [75 MB × 3 = 225 MB] で 3 台起動することが可能です。
RemoteFX ~ RemoteFX4 のゲスト OS で RemoteFX を有効にして解像度を 1024 × 768 にして起動できる台数を
確認した結果がこちらになります。
image
4 台目の起動でエラーになりましたが、[1280 × 1024] と比較して起動できる台数が増えています。
解像度とモニター数の設定による GPU のメモリの使用量ですが、RemoteFX USB デバイスリダイレクトにも影響します。
USB デバイスリダイレクトですが、RemoteFX 3D ビデオアダプターが追加されているゲスト OS でしか利用できません。
Web カメラのようなグラフィックを使用するデバイスをリダイレクトするのであれば、GPU のメモリを使用するのが良いと
思うのですが、グラフィックを利用しないデバイスを利用するのであれば、最低限の解像度にしてメモリの割り当てを
抑えるのは手段としてあるかと思います。
自宅に Web カメラ以外に何かリダイレクトできそうなデバイスがないかを探したところ、USB NIC がありました。
LAN-USB
いろいろと試してみたところこの USB デバイスをリダイレクトすることができました。
Windows 7 x86 SP1 Beta に LAN-USB を接続して、接続しているコンピュータ側にデバイスドライバをインストールしてない
状態だと USB デバイス リダイレクトの対象として表示されました。
image
デバイスドライバをインストールして、接続をしに行く端末上でデバイスが正常に認識できている状態ではリダイレクト可能な
デバイスとしては表示がされないのですよね…。
デバイスマネージャーでこの状態 (デバイスドライバをインストールしていない) であれば、リダイレクト可能ですが、
?image
この状態 (デバイスドライバインストール済み) だと、USB デバイスリダイレクト対象として表示されません。image
?image
どのようなデバイスがリダイレクトできるのか私はまだよくわかっていないので、この辺はきちんと調べてみたいと思います。
今回は、たまたまリダイレクトできたのでひとまず使用してみたいと思います。
USB NIC をリダイレクト対象として、選択して Windows 7 x86 SP1 Beta のゲスト OS に接続をしてみます。
上がゲスト OS、下がリモートデスクトップを実行している (USB 機器を接続している) 端末になります。
image
image
接続している USB NIC (AX88772) が Hyper-V 上のゲスト OS にリダイレクトされていることが確認できます。
実際に USB NIC で IP も取得できており、USB NIC から PING の疎通も確認できました。
同様の設定で、RemoteFX 3D ビデオアダプターを追加していないゲスト OS に接続をしてみます。
この場合、USB NIC がリダイレクトされません。
image?
リダイレクトできる機器の条件がわかっていないのですが、RemoteFX USB デバイスリダイレクトを使用する場合、
リダイレクトする機器の種類によって解像度を変更することも検討する必要がありそうですね。
それと、以前の投稿では BUFFALO の BWC-130H01 という Web カメラを使用してうまくカメラから動画をとることが
できなかったのですが、今回使用している LOOX U/B50N だとカメラを使用することができました。
GPU の問題ではなかったみたいですね。
合わせ鏡状態ではありますが、下の画像は Hyper-V のゲスト OS で Web カメラを使って取得したものになります。
image
途中から話がずれてしまった投稿ではありますが、RemoteFX について新しく検証してみたとことまとめてみました。

Written by Masayuki.Ozawa

8月 21st, 2010 at 1:27 am

Posted in Hyper-V

SQL Azure で使用可能な動的管理ビュー

leave a comment

今日は通勤中に SQL Azure の自習書を読んでいました。

SQL Azure 入門

読んでいて SQL Azure で動的管理ビュー (DMV) はどの程度使用できるんだろうというのが気になりました。
自習書の中に System Views (SQL Azure Database) へのリンクがあり、この技術情報が使用可能な
DMV についての情報となるようですね。

この技術情報の中に [Dynamic Management Views] というセクションがあり DMV について記載されています。

SQL Server 2008 R2 の SSMS で SQL Azure に接続して、システムビューから利用可能な DMV を確認してみました。
# 技術情報の英語を読むのを逃げました…。

DMV 名 説明 (BOL から抜粋)
sys.dm_database_copies (*) BOL には記載なし (SQL Azure 特有の DMV)
sys.dm_db_partition_stats 現在のデータベースのパーティションごとに、ページ数と行数の情報を返します。
sys.dm_exec_connections このインスタンスの SQL Server との間に確立された接続に関する情報と各接続の詳細を返します。
sys.dm_exec_query_stats キャッシュされたクエリ プランの集計パフォーマンス統計を返します
sys.dm_exec_requests SQL Server 内で実行中の各要求に関する情報を返します。
sys.dm_exec_sessions SQL Server での認証済みセッションごとに 1 行を返します。
sys.dm_tran_active_transactions SQL Server のインスタンスのトランザクションに関する情報を返します。
sys.dm_tran_database_transactions データベース レベルのトランザクションに関する情報を返します。
sys.dm_tran_locks 現在アクティブなロック マネージャのリソースに関する情報を返します。
sys.dm_tran_session_transactions 関連付けられたトランザクションとセッションの相関関係情報を返します。

(*) master データベースにのみ存在している DMV

この中で、[sys.dm_database_copies] に関しては SQL Azure 特有の DMV になるようですね。
SQL Server 2008 R2 のBooks Online (BOL) にはこの DMV についての記載はありませんでした。

自習書にも書かれていたのですが、現在インデックスの断片化を見ることができる DMV は現在、提供されていないのですね。
インデックスの断片化や欠落したインデックス (missing index) は SQL Azure でも見れると便利そうなのですがこの辺は今後に期待でしょうか。

SQL Azure を運用する際に、データベースエンジニアとしてどのようにして DB のヘルスチェックをするかは見れる情報が
限定されているので悩ましいですね。

Written by Masayuki.Ozawa

8月 16th, 2010 at 2:47 pm

Posted in SQL Server

SQL Server 2008 R2 と SQL Azure のサーバー / データベースプロパティの比較

leave a comment

最近、SQL Server に触ることもなかったので久しぶりに勉強を。

SQL Server 2008 R2 と SQL Azure のサーバープロパティ / データベースプロパティはどのくらい違うのかが
気になったので調べてみました。

■サーバープロパティの比較

まずはサーバープロパティの比較から。

使用した SQL は以下になります。
SQL Server 2008 R2 / SQL Azure 共に同じ SQL で実行可能です。

SELECT
SERVERPROPERTY(‘BuildClrVersion’) AS BuildClrVersion,
SERVERPROPERTY(‘Collation’) AS Collation,
SERVERPROPERTY(‘CollationID’) AS CollationID,
SERVERPROPERTY(‘ComparisonStyle’) AS ComparisonStyle,
SERVERPROPERTY(‘ComputerNamePhysicalNetBIOS’) AS ComputerNamePhysicalNetBIOS,
SERVERPROPERTY(‘Edition’) AS Edition,
SERVERPROPERTY(‘EditionID’) AS EditionID,
SERVERPROPERTY(‘EngineEdition’) AS EngineEdition,
SERVERPROPERTY(‘InstanceName’) AS InstanceName,
SERVERPROPERTY(‘IsClustered’) AS IsClustered,
SERVERPROPERTY(‘IsFullTextInstalled’) AS IsFullTextInstalled,
SERVERPROPERTY(‘IsIntegratedSecurityOnly’) AS IsIntegratedSecurityOnly,
SERVERPROPERTY(‘IsSingleUser’) AS IsSingleUser,
SERVERPROPERTY(‘LCID’) AS LCID,
SERVERPROPERTY(‘LicenseType’) AS LicenseType,
SERVERPROPERTY(‘MachineName’) AS MachineName,
SERVERPROPERTY(‘NumLicenses’) AS NumLicenses,
SERVERPROPERTY(‘ProcessID’) AS ProcessID,
SERVERPROPERTY(‘ProductVersion’) AS ProductVersion,
SERVERPROPERTY(‘ProductLevel’) AS ProductLevel,
SERVERPROPERTY(‘ResourceLastUpdateDateTime’) AS ResourceLastUpdateDateTime,
SERVERPROPERTY(‘ResourceVersion’) AS ResourceVersion,
SERVERPROPERTY(‘ServerName’) AS ServerName,
SERVERPROPERTY(‘SqlCharSet’) AS SqlCharSet,
SERVERPROPERTY(‘SqlCharSetName’) AS SqlCharSetName,
SERVERPROPERTY(‘SqlSortOrder’) AS SqlSortOrder,
SERVERPROPERTY(‘SqlSortOrderName’) AS SqlSortOrderName,
SERVERPROPERTY(‘FilestreamShareName’) AS FilestreamShareName,
SERVERPROPERTY(‘FilestreamConfiguredLevel’) AS FilestreamConfiguredLevel,
SERVERPROPERTY(‘FilestreamEffectiveLevel’) AS FilestreamEffectiveLevel

?

実行結果がこちら。

? SQL Server 2008 R2 SQL Azure
BuildClrVersion v2.0.50727 NULL
Collation <インストール時の照合順序> SQL_Latin1_General_CP1_CI_AS
CollationID 315464 872468488
ComparisonStyle 196609 196609
ComputerNamePhysicalNetBIOS <サーバー名> NULL
Edition <エディション名> SQL Azure
EditionID -2117995310 1674378470
EngineEdition 3 5
InstanceName <インスタンス名> NULL
IsClustered 0 NULL
IsFullTextInstalled 1 0
IsIntegratedSecurityOnly 0 0
IsSingleUser 0 0
LCID 1041 1033
LicenseType DISABLED DISABLED
MachineName <サーバー名> NULL
NumLicenses NULL NULL
ProcessID 1488 NULL
ProductVersion 10.50.1600.1 10.25.9386.0
ProductLevel RTM RTM
ResourceLastUpdateDateTime 2010-04-02 17:38:24.957 2010-06-16 17:08:33.043
ResourceVersion 10.50.1600 10.25.9346
ServerName <サーバー名><インスタンス名> <サーバー名>
SqlCharSet 109 1
SqlCharSetName cp932 iso_1
SqlSortOrder 0 52
SqlSortOrderName bin_ascii_8 nocase_iso
FilestreamShareName <共有名> NULL
FilestreamConfiguredLevel 0 0
FilestreamEffectiveLevel 0 0

2008 R2 の環境は日本語なのですが、キャラセット系はやはり異なりますね。
SQL Azure ではフルテキスト検索がインストールされていないんですね。

■データベースプロパティの比較

続いては、master データベースのプロパティを比較してみました。
# ユーザーデータベースも比較したのですが同じだったのでこちらを。

使用した SQL はこちらになります。

SELECT
DATABASEPROPERTYEX (N’master’,’Collation’) AS Collation,
DATABASEPROPERTYEX (N’master’,’ComparisonStyle’) AS ComparisonStyle,
DATABASEPROPERTYEX (N’master’,’IsAnsiNullDefault’) AS IsAnsiNullDefault,
DATABASEPROPERTYEX (N’master’,’IsAnsiNullsEnabled’) AS IsAnsiNullsEnabled,
DATABASEPROPERTYEX (N’master’,’IsAnsiPaddingEnabled’) AS IsAnsiPaddingEnabled,
DATABASEPROPERTYEX (N’master’,’IsAnsiWarningsEnabled’) AS IsAnsiWarningsEnabled,
DATABASEPROPERTYEX (N’master’,’IsArithmeticAbortEnabled’) AS IsArithmeticAbortEnabled,
DATABASEPROPERTYEX (N’master’,’IsAutoClose’) AS IsAutoClose,
DATABASEPROPERTYEX (N’master’,’IsAutoCreateStatistics’) AS IsAutoCreateStatistics,
DATABASEPROPERTYEX (N’master’,’IsAutoShrink’) AS IsAutoShrink,
DATABASEPROPERTYEX (N’master’,’IsAutoUpdateStatistics’) AS IsAutoUpdateStatistics,
DATABASEPROPERTYEX (N’master’,’IsCloseCursorsOnCommitEnabled’) AS IsCloseCursorsOnCommitEnabled,
DATABASEPROPERTYEX (N’master’,’IsFulltextEnabled’) AS IsFulltextEnabled,
DATABASEPROPERTYEX (N’master’,’IsInStandBy’) AS IsInStandBy,
DATABASEPROPERTYEX (N’master’,’IsLocalCursorsDefault’) AS IsLocalCursorsDefault,
DATABASEPROPERTYEX (N’master’,’IsMergePublished’) AS IsMergePublished,
DATABASEPROPERTYEX (N’master’,’IsNullConcat’) AS IsNullConcat,
DATABASEPROPERTYEX (N’master’,’IsNumericRoundAbortEnabled’) AS IsNumericRoundAbortEnabled,
DATABASEPROPERTYEX (N’master’,’IsParameterizationForced’) AS IsParameterizationForced,
DATABASEPROPERTYEX (N’master’,’IsQuotedIdentifiersEnabled’) AS IsQuotedIdentifiersEnabled,
DATABASEPROPERTYEX (N’master’,’IsPublished’) AS IsPublished,
DATABASEPROPERTYEX (N’master’,’IsRecursiveTriggersEnabled’) AS IsRecursiveTriggersEnabled,
DATABASEPROPERTYEX (N’master’,’IsSubscribed’) AS IsSubscribed,
DATABASEPROPERTYEX (N’master’,’IsSyncWithBackup’) AS IsSyncWithBackup,DATABASEPROPERTYEX (N’master’,’IsTornPageDetectionEnabled’) AS IsTornPageDetectionEnabled,
DATABASEPROPERTYEX (N’master’,’LCID’) AS LCID,
DATABASEPROPERTYEX (N’master’,’Recovery’) AS Recovery,
DATABASEPROPERTYEX (N’master’,’SQLSortOrder’) AS SQLSortOrder,
DATABASEPROPERTYEX (N’master’,’Status’) AS Status,
DATABASEPROPERTYEX (N’master’,’Updateability’) AS Updateability,
DATABASEPROPERTYEX (N’master’,’UserAccess’) AS UserAccess,
DATABASEPROPERTYEX (N’master’,’Version’) AS Version

?

注意点としては、SQL Azure ではフルテキスト検索が使えませんので、SQL Azure で実行する場合は、
[DATABASEPROPERTYEX (N’master’,’IsFulltextEnabled’) AS IsFulltextEnabled,] の行はコメント化する必要があります。

? SQL Server 2008 R2 SQL Azure
Collation <サーバーレベルの照合順序> SQL_Latin1_General_CP1_CI_AS
ComparisonStyle 196609 196609
IsAnsiNullDefault 0 0
IsAnsiNullsEnabled 0 0
IsAnsiPaddingEnabled 0 0
IsAnsiWarningsEnabled 0 0
IsArithmeticAbortEnabled 0 0
IsAutoClose 0 0
IsAutoCreateStatistics 1 1
IsAutoShrink 0 0
IsAutoUpdateStatistics 1 1
IsCloseCursorsOnCommitEnabled 0 0
IsFulltextEnabled 0 <設定なし>
IsInStandBy 0 0
IsLocalCursorsDefault 0 0
IsMergePublished 0 0
IsNullConcat 0 0
IsNumericRoundAbortEnabled 0 0
IsParameterizationForced 0 0
IsQuotedIdentifiersEnabled 0 0
IsPublished 0 0
IsRecursiveTriggersEnabled 0 0
IsSubscribed 0 0
IsSyncWithBackup 0 0
IsTornPageDetectionEnabled 0 0
LCID 1041 1033
Recovery SIMPLE FULL
SQLSortOrder 0 52
Status ONLINE ONLINE
Updateability READ_WRITE READ_WRITE
UserAccess MULTI_USER MULTI_USER
Version 661 1105

面白いな~と思ったのは、SQL Azure で作成されるデータベースは復旧モデルが [フル] になっていることろですね。
オンプレミスの SQL Server では、[master] データベースの復旧モデルは [シンプル] なのですが、SQL Azure では
[master] データベースも含めて [フル] となっているようです。

SQL Azure はまだあまり触れていないので、これから頑張って勉強していきたいと思います。

Written by Masayuki.Ozawa

8月 16th, 2010 at 12:24 pm

Posted in SQL Server

Windows Server OS のエディションをアップグレード

2 comments

サーバー OS のエディションのアップグレードについて少し調べてみました。

■Windows Server 2003 R2 SP2

image

今回は Windows Server 2003 R2 Standard Edition x86 SP2 の環境を用意しました。
# x64 でないのは、Standard Edition が x86 のメディアしかダウンロードしていなかったから…。

このサーバーを Enterprise Edition に変更したいと思います。

2003 のエディション変更に関してはいくつか技術情報があります。
# 会社で教えてもらいました。
Windows Server 2003 R2 Standard Edition から Windows Server 2003 R2 Enterprise Edition Service Pack 2 にアップグレードしても、一部のファイルのバージョンが変更されない
サポートされているアップグレード パス
Windows Server 2003, Enterprise Edition : アップグレードまたは新規インストール

一通りの更新プログラムをインストールして、Hyper-V の統合サービスをインストールした状態です。

image

注意点としては、統合サービスをインストールした状態だとアップグレード時に以下のブルースクリーンとなってしまいます。
ということなので、アップグレードする前は統合サービスはアンインストールしておきます。
# マウスを使いたかったので直前までインストールしていました。
image

それでは、Enterprise Edition に変更してみたいと思います。

  1. 同一ビット (x86/x64) の Enterprise Edition のメディアを挿入してセットアップを実行します。
  2. [Windows Server 2003, Enterprise Edition をインストールする] をクリックします。
    image
  3. [インストールの種類] から [アップグレード (推奨)] を選択して、[次へ] をクリックします。
    # [新規インストール (詳細)] という選択肢もあります。
    image
  4. [同意します] を選択し、[次へ] をクリックします。
    image
  5. プロダクトキーを入力して [次へ] をクリックします。
    # 今回は入力しないで進めています。
    image
  6. 更新ファイルの取得を設定して [次へ] をクリックします。
    image
  7. [次へ] をクリックします。
    エディションの変更ですがそれまで適用してあったセキュリティパッチはすべてクリアされます。
    今回は With SP2 のメディアを使っているので SP に関しては特に気にせず進めています。
    image
  8. そうすると、インストーラーが進み自動で再起動されます。
    ?image
  9. 再起動後、セットアップが自動で実行されます。
    結構大がかりなファイルの変更しているみたいですね。
    image
  10. インストール中に自動で再起動され、再度セットアップが実行されます。
    # 統合サービスがインストールされているとこの後の再起動時にブルースクリーン→再起動が繰り返されます。
    image
  11. 再起動後の画面がこちらになります。
    ログイン画面のエディションは初回起動時は Standard となっているようです。
    image
    再起動後をするとログオン画面も Enterprise Edition に変更されます。
    image
  12. [winver] を実行すると Enterprise Edition になっていますのでアップグレードは終わっていますね。
    image?

  13. 初回の起動時は、R2 のセットアップが始まりますので、インストールメディアの 2 枚目を挿入してインストールをしてみました。
    image
  14. Standard の段階で R2 でしたので、再インストール扱いになりますがインストールしておきたいと思います。
    # R2 のインストールは通常のインストールと同じですので割愛。
    image
  15. アップグレード後はセキュリティパッチはすべて外れていますので、再度適用する必要があります。
    # 統合サービスは再度インストールした状態です。
    image

以上で Enterprise Edition へのアップグレードは終了です。

■Windows Server 2008 x64 SP2

image

Windows Server 2008 の技術情報についてはこちらに記載があります。

Windows Server 2008 アップグレード ガイド

この環境もパッチは適用済みにしています。

image

この環境を Standard → Enterprise に変更してみたいと思います。

  1. 同一ビット (x86/x64) のインストールメディアを挿入してセットアップを実行します。
  2. [今すぐインストール] をクリックします。
    image
  3. 更新プログラムの取得を選択します。
    image?
  4. [Windows Server 2008 Enterprise (フル インストール)] を選択して、[次へ] をクリックします。
    image
  5. [条項に同意します] を有効にして、[次へ] をクリックします。
    image
  6. [アップグレード] をクリックします。
    image
  7. 互換性のレポートが表示されますので内容を確認し、[次へ] をクリックします。
    image?
    統合サービスをインストールしているので、そのあたりのデバイスが警告で表示されています。
    image
  8. 次へをクリックするとすぐにアップグレードが実行されますので完了するまで待ちます。
    再起動が必要なタイミングでは自動的に再起動されます。
    image?
  9. 再起動が完了すると Enterprise Edition にアップグレードがされています。
    image
    image?
  10. アップグレード後はセキュリティパッチはすべて外れていますので、再度適用する必要があります。
    image?

これで Enterprise Edition のアップグレードは完了です。
2008 の場合は統合サービスをアンインストールしなくてもブルースクリーンは発生しないみたいですね。

?

■Windows Server 2008 R2

image

Windows Server 2008 R2 の技術情報についてはこちら。

Windows Server 2008 R2 のインストール

こちらもパッチは適用済みです。

image

  1. インストールメディアを挿入してセットアップを実行します。
  2. [今すぐインストール] をクリックします。
    image
  3. 更新プログラムの取得を選択します。
    image
  4. [Windows Server 2008 R2 Enterprise (フル インストール)] を選択して、[次へ] をクリックします。
    image
  5. [同意します] を有効にして、[次へ] をクリックします。
    image?
  6. [アップグレード] をクリックします。
    image?
  7. 互換性のレポートが表示されますので内容を確認し、[次へ] をクリックします。
    2008 R2 では統合サービスが組み込まれた状態がデフォルトですので、そのあたりのデバイスに関してはメッセージはありません。
    image
  8. 次へをクリックするとすぐにアップグレードが実行されますので完了するまで待ちます。
    再起動が必要なタイミングでは自動的に再起動されます。
    image
  9. 再起動が完了すると Enterprise Edition にアップグレードがされています。
    image
    image
  10. アップグレード後はセキュリティパッチはすべて外れていますので、再度適用する必要があります。
    image

これで Enterprise Edition のアップグレードは完了です。
?

?

以上でWindows Server OS のエディションアップグレードは終了です。

結構時間がかかるのとかなり大がかりなインストールプロセスが実行されているので、エディションの変更は機能としてできますが、
可能な限り発生させないことが大事ですね。

Written by Masayuki.Ozawa

8月 14th, 2010 at 6:32 am

Posted in Windows Server

PowerShell でイベントログを保存

leave a comment

以前、このような投稿をしました。
WMIC で イベントログをローテーション

今回は PowerShell でイベントログを保存してみたいと思います。

イベントログ関連のコマンドレットとしては以下のようなものがあります。

PS >get-command "*EventLog" | Format-Table name

Name
—-
Clear-EventLog
Get-EventLog
Limit-EventLog
New-EventLog
Remove-EventLog
Show-EventLog
Write-EventLog

イベントログの情報取得 (Get-EventLog) や、イベントログに情報出力 (New-EventLog) はあるのですが、イベントログを
evt 形式で保存するようなコマンドレットはないみたいなのですよね。
# Export-CSV でファイルにリダイレクトすることはできますが。

evt 形式でイベントログを保存するためには、WMI を使って BackupEventLog をコールする必要があるようです。
結果、WMIC と一緒になりますね。

以下のような PowerShell を実行する事でイベントログを取得し、evt 形式でファイルに保存することが可能です。
# backupeventlog は既にファイルが存在していると保存されないため、Test-Path でファイルの存在確認をして
  ファイルが存在している場合は削除しています。

$LogDir = "C:temp"
$EventLog = Get-WmiObject win32_nteventlogfile
foreach ($Log in $EventLog){
??? $Log.PSBase.Scope.Options.EnablePrivileges = $true
??? $EvtFile = $Log.LogfileName + "_" + (Get-Date).ToString("yyyyMMddHHmm") + ".evt"
??? if((Test-Path ($LogDir + "" + $EvtFile)) -eq $true) {
??????? Remove-Item ($LogDir + "" + $EvtFile)
??? }
??? $Log.backupeventlog($LogDir + "" + $EvtFile)
}

ポイントとしては、

  1. [PSBase.Scope.Options.EnablePrivileges = $true] を設定する
  2. [Security] のログは、[管理者グループ (Administrators) かつ、[管理者として実行]] していないと取得できない

というところかと。

EnablePrivileges を設定しないで [BackupEventLog] をコールすると [アクセスが拒否されました] というエラーになることがあります。
# Windows Server 2003 だと現象が発生したのですが、Windows 7 だと発生しませんでした…。

この辺りに関しては以下の情報が参考になります。
Vista – Win32_NTEventLogFile BackupEventLog: Access denied
WMI による Windows の管理

Security のログは通常のイベントビューアーでも Administrators しか表示することができないのですが、PowerShell で
Security のログを操作するときは Administrators かつ、管理者として実行する必要があります。

セキュリティログに関しては、以下の情報が分かりやすいかと。
サーバー管理者のためのイベントログ運用の基本

Administrators グループのユーザーで管理者として実行していない場合の [Get-WmiObject win32_nteventlogfile] の実行結果がこちらです。

Get-WmiObject win32_nteventlogfile | Format-Table LogfileName

LogfileName
———–
Application
HardwareEvents
Internet Explorer
Key Management Service
Media Center
ODiag
OSession
System
Windows PowerShell

管理者として実行した結果がこちらになります。

Get-WmiObject win32_nteventlogfile | Format-Table LogfileName

LogfileName
———–
Application
HardwareEvents
Internet Explorer
Key Management Service
Media Center
ODiag
OSession
Security
System
Windows PowerShell

[Security] が取得できているのが確認できますね。

?

この辺の情報はお客様先で障害があったときに使用する事がありますのでバッチで簡単に EVT 形式のファイルに保存できると
問い合わせがあったときに情報を取得してもらうのが楽にできてよいですね。

Written by Masayuki.Ozawa

8月 12th, 2010 at 2:50 pm

Posted in PowerShell

PowerShell で Twitter のタイムラインを取得

leave a comment

PowerShell の勉強がてら、インターネット上で公開されている内容をつぎはぎしながら作ってみました。
エラートラップ一切なしでシーケンシャルに実行。

うん、Developer から ITPro になって良かったと思います(笑)

$RequestUrl = "http://api.twitter.com/1/statuses/home_timeline.xml?count=10"

$Request = [System.Net.WebRequest]::Create($RequestUrl)
$Request.Credentials = Get-Credential
# $Username = ""
# $Password = ""
# $Request.Credentials = new-object System.Net.NetworkCredential($Username,$Password)

$response = $Request.GetResponse()
$reader = new-object System.IO.StreamReader($response.GetResponseStream())

$returnvalue = $reader.ReadToEnd()
$reader.Close()
$Ary = @()

foreach ($child in $returnvalue.statuses.ChildNodes | Sort-Object created_at)
{
??? $DateAry = $child.created_at.ToString().Split(" ")???
??? $Date = $DateAry[3] -as [DateTime]
??? $Ary += (($Date.AddHours(9)).ToString("yyyy/MM/dd HH:mm:ss") + "? " + `
??? "[@" +$child.User.screen_name + "] " + $child.text).ToString()??
}

$Ary | Out-GridView

PowerShell をもっと基礎から勉強しないと駄目だな~。

Written by Masayuki.Ozawa

8月 12th, 2010 at 1:58 pm

Posted in PowerShell

仮想ハードディスクを縮小する方法

one comment

以前、以下の投稿をしました。
仮想ハードディスクの拡張と縮小

縮小には VHD Resizer というツールも検証してみたのですが、仮想ハードディスクのサイズを
縮小することができませんでした。

以下の仮想ディスクを VHD Resizer で開いてみます。
image

現在 40 GB のディスクになっているのですが、[Min] が 40gb となっており、ディスクサイズを縮小することができませんでした。
image

前回はここで終わっていたのですが、先月以下の記事が投稿されました。
Shrink VHD size

VHD Resizer を使って、仮想ハードディスクのサイズを縮小する方法が紹介されていました。
「あれ。VHD Resizer でディスクサイズを縮小できるんだ。」と思って再度検証してみました。

?

■VHD Resizer で仮想ハードディスクを縮小するためには

VHD Resizer で仮想ハードディスクを縮小するためには、事前にパーティションを縮小して、[未割り当ての領域] としておく必要があるようです。
image
image
image

未割り当ての領域を作った仮想ハードディスクを VHD Resizer で開いてみます。
image
そうすると、前回 (未割り当ての領域を作る前) は [40 gb] となっていたのが [20 gb] となっています。

VHD Resizer はベースの仮想ハードディスクはそのままで、新規の仮想ハードディスクを作成します。
Min が 20 gb になっているので、New Size に 20 gb を指定しても [resize] を押すことができません。
image

Size を MB にすると理由がわかります。
MB だと 20531 mb となっています。New Size には Min より大きい数を入力する必要がありますので、今回の場合は、[21 GB] か
[20532 MB] を設定する必要があります。

[resize] を押すと、Destination に指定したパスに縮小した VHD が作成されます。
image

[resize] を押すとオリジナルの仮想ハードディスクが読み込まれ、新規の仮想ハードディスクに順次書きだされていきます。
image

終了するとダイアログが表示されます。
今回は他の仮想ハードディスクのサイズは変更しませんので、[いいえ] をクリックします。
image

VHD Resizer で縮小が完了した仮想ハードディスクがこちらになります。
image
未割り当ての領域もなくなってディスク全体が縮小できていることが確認できました。

未割り当ての領域にしないと [Min] が変更されないとは気づきませんでした。

Written by Masayuki.Ozawa

8月 9th, 2010 at 9:25 pm

Posted in Hyper-V

Active Directory に同姓同名のユーザーを登録しようとしたときの注意点

leave a comment

今回も軽めの投稿を。

Active Directory でユーザーを作成する場合、GUI から登録することが多いかと思います。
# 人数が多い会社さんですと ID 管理システムやバッチで登録することもあるかと思いますが。

[Active Directory ユーザーとコンピューター] で同一 OU 内に同姓同名のユーザーを登録しようとした場合、注意が必要となります。

?

■同姓同名のユーザーを同一の OU に登録しようとした場合の挙動

このようなユーザーが [TEST2] という OUに登録されています。
image

同じ [TEST2] という OU に [TEST00002] というログオン名で同姓同名のユーザーを作成してみます。
image

同姓同名のユーザーを同一 OU 内に作成しようとすると以下のエラーとなります。
image

ユーザーを作成する際、入力した内容が以下のように属性に設定されます。

入力内容 属性 設定値
sn 山田
givenName 一郎
イニシャル initials 今回はブランク
フル ネーム
# デフォルトは [姓 名]
cn
displayName
name
distinguishedName?? (*)
山田 一郎
山田 一郎
山田 一郎
CN=山田 一郎,OU=TEST2,DC=2008-domain,DC=local
ユーザーログオン名 userPrincipalName?? (*) TEST00001@2008-domain.local
ユーザー ログオン名 (Windows 2000 より前) sAMAccountName??? (*) TEST00001

[userPrincipalName][sAMAccountName] は重複できないですが、その他に、[distinguishedName] も重複することができません。
# (*) がついている項目が重複できません。

同一 OU 内に同一の [フル ネーム] のユーザーを作成しようとするると、[distinguishedName] が重複してしまいエラーとなります。

■同姓同名のユーザーを同一の OU を登録する方法

結論から最初に書いてしまいますと [同一のフル ネームのユーザーは登録できませんが、表示名が同一のユーザー] は登録することができます。

同姓同名の表示名のユーザーを同一の OU 内に登録する場合は、一度 [フル ネームを別の名前] に設定します。image

そうすると以下のようにユーザーが登録されます。
image?

対象のユーザーを右クリックして、[名前の変更] をクリックします。
image

名前の変更ができるようになりますので、修正します。
image

一文字でも文字を修正すると以下のダイアログボックスが表示されます。
名前の変更で変更した内容は [フル ネーム] に反映されます。
image

フル ネームを変更して [OK] をクリックするとこのようなエラーが。
image

名前の変更で入力できる項目は以下のように属性に反映されます。

入力内容 属性 設定値
フル ネーム cn
name
distinguishedName?? (*)
山田 一郎
山田 一郎
CN=山田 一郎,OU=TEST2,DC=2008-domain,DC=local
sn 山田
givenName 一郎
表示名 displayName 山田 一郎_2
ユーザーログオン名 userPrincipalName?? (*) TEST00002@2008-domain.local
ユーザー ログオン名 (Windows 2000 より前) sAMAccountName??? (*) TEST00002

名前の変更で変更ができるフル ネームは [distinguishedName] に設定されますので、重複してしまってエラーとなります。
名前の変更から表示名を変更することはできますので、このような変更であれば設定可能です。
image

GUI から作成した場合、フル ネームがデフォルトで [姓 + 名]? が設定されるのでそのまま作成してしまうケースが
あるかもしれませんが、OU 内に同姓同名のユーザーが作られる可能性がある場合は、作成の段階でフルネームを一意に
設定するようにしておいた方が良いかと思います。
# 同姓同名の社員が同じ部署に配属されないように人事的な考慮はされると思いますので、拠点や部門で OU を分けている場合
? それほど発生しないとは思いますが。

今回だとこのような形式でしょうか。
# ユーザー作成時にフルネームを [TEST00002] に設定して、名前の変更で表示名を変更しています。
image?

上記のような設定でユーザー情報を設定しているとこのような形でユーザーを登録することが可能です。
image

OU が異なれば同一のフルネームのユーザーを登録することが可能です。
[cn] [name] は他の OU のユーザーと同一ですが、OU が異なっているため、[distinguishedName] が変わりますので。
# ログオン名は一意にならないと駄目ですが。
image?
image

項目 TEST00001 TEST00002 TEST00003
cn TEST00001 TEST00002 TEST00001
name TEST00001 TEST00002 TEST00001
distinguishedName?? CN=TEST00001,
OU=TEST2,
DC=2008-domain,
DC=local
CN=TEST00002,
OU=TEST2,
DC=2008-domain,
DC=local
CN=TEST00001,
OU=TEST3,
DC=2008-domain,
DC=local
sn 山田 山田 山田
givenName 一郎 一郎 一郎
displayName 山田 一郎 山田 一郎 山田 一郎
userPrincipalName TEST00001@2008-domain.local TEST00002@2008-domain.local TEST00003@2008-domain.local
sAMAccountName TEST00001 TEST00002 TEST00003

?

専任の管理者がいない会社さんだと初期の Users の下にユーザーを作っていってしまうことがあるかと思いますので、
その時には注意が必要そうですね。

Written by Masayuki.Ozawa

8月 7th, 2010 at 1:57 pm

Posted in Active Directory