SE の雑記

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

Archive for 8月 16th, 2010

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