タグ

ブックマーク / engineermemo.wordpress.com (16)

  • SQL Database v12 の待ち事象の取得について

    SQL Database では待ち事象が取得できるようになっており、待ち事象の取得は v12 でも取得することが可能です。 v12 で待ち事象を取得する場合、 sys.dm_os_wait_stats sys.dm_db_wait_stats の 2 種類の DVM から情報を取得することができます。 現状、v12 で取得する際の注意点としては、パフォーマンスレベルが「S2」以上の必要があるようです。 先日 GA した西ヨーロッパでも確認をしてみたのですが、「S1」以下だと、待ち事象の情報を取得することができないようでした。 # これだと動作的に微妙なのでそのうち全エディションで使えるのではないかと思いますが。 S2 以上であれば、以下のクエリで取得することが可能です。 SELECT * FROM sys.dm_os_wait_stats order by wait_type SELECT

    SQL Database v12 の待ち事象の取得について
    JHashimoto
    JHashimoto 2015/02/05
    "SQL Databaseでは待ち事象が取得できるようになっており、待ち事象の取得はv12でも取得することが可能です。v12で待ち事象を取得する場合、sys.dm_os_wait_stats sys.dm_db_wait_statsの2種類のDVM から情報を取得することができます。"
  • SQL Server における可変長文字列の末尾の空白について

    SQL Server の可変長文字列 (varchar / nvarchar) では、 ‘AAAA’ というような文字列をデータとして登録した場合、可変長文字列では ‘AAAA’ というように設定されている文字列のみが登録されます。 char(10) というような固定長文字列型にデータを入れた場合には、 ‘AAAA      ‘ といった形で空白が付与されて固定長文字列として処理がされます。 それでは、 ‘AAAA   ‘ というようなデータに空白が含まれるものを入れた場合にはどうなるかを投稿で見ていきたいと思います。 SQL Server では、末尾に空白 (Trailing Spaces) があるデータの扱いについての SET オプションがあります。 SET ANSI_PADDING (Transact-SQL) ANSI_PADDING では、データの末尾に空白 (スペース) の扱

    SQL Server における可変長文字列の末尾の空白について
    JHashimoto
    JHashimoto 2014/12/22
    “そのため、 ‘AAAA ‘ を可変長文字列型に入れた場合には、末尾の空白もそのまま格納されます。 これについては KB で情報が公開されています。" "ただし、比較については末尾の空白は無視されます。”
  • SQL Server / SQL Database の IDENTITY プロパティの連番の保証性について

    twitter で質問をいただいたので少しまとめてみたいと思います。 SQL Server  / SQL Database では、数値型の連番を簡単に設定するためのプロパティとして IDENTITY があります。 これを設定しておくと自動的に連番が付与されますが、サーバーの再起動等が発生した場合には連番は保証されません。 これについては IDENTITY (プロパティ) (Transact-SQL) IDENTITY プロパティ使用時の動作について に記載されています。 SQL Server 2012 以降は、IDENTITY の説明として以下が追加されています。 サーバーの再起動または他のエラーが発生した後の連続した値: SQL Server では、パフォーマンス上の理由から ID 値をキャッシュすることがあります。割り当てられた値の一部は、データベースの障害やサーバーの再起動が発生した

    SQL Server / SQL Database の IDENTITY プロパティの連番の保証性について
    JHashimoto
    JHashimoto 2014/12/21
    “SQL Server/SQL Databaseでは、数値型の連番を簡単に設定するためのプロパティとしてIDENTITYがあります。 これを設定しておくと自動的に連番が付与されますが、サーバーの再起動等が発生した場合には連番は保証されません”
  • Windows Internal Database のメンテナンス

    昨日、facebook で話に上がったのでメモとして。 ■Windows Internal Database のメンテナンス Windows Internal Database (WID) という機能を OS の標準の機能として使用することができます。 AD RMS / WSUS / AD FS で使用されていることがあるかと思います。 この機能ですが、名前付きパイプで動作している SQL Server になりますので SQLCMD 当のツールで接続することができます。 # SQL Server Embedded Edition になるのでしょうか。DB サイズの上限は調べてみたのですが MS のページでまとまったものが見当たりませんでした…。 サービスとしては、[Windows Internal Database (MICROSOFT##SSEE)] となります。 このサービスの実行ファ

    Windows Internal Database のメンテナンス
    JHashimoto
    JHashimoto 2014/12/19
    “ Windows Internal Database (WID) という機能を OS の標準の機能として使用することができます。" "この機能ですが、名前付きパイプで動作している SQL Server になりますので SQLCMD 当のツールで接続することができます。”
  • Microsoft Project を使用する際のメモ

    よく忘れるので Project を使用する際のメモを。 使いこなせていないので簡単な WBS を引くときにしか使えていませんが…。 ■プロジェクトの基点の設定 [プロジェクト] → [プロジェクト情報] からプロジェクトの基点を設定することができます。 プロジェクトの開始日を基点としてスケジュールするのか、プロジェクトの終了日を基点としてスケジュールするのかによって、[スケジュールの基点] を変更するとよいかと。 # 通常は開始日基点になると思いますが。 ■カレンダー / 稼働時間の設定 Project のオプションの [スケジュール] に稼働時間に関する設定がありますが、カレンダーオプションは [すべての新規プロジェクト] [開いている Project] の二種類がありますので、適切なものを選択し設定します。 デフォルトのカレンダーでは、[土][日] が非稼働日となっているので、祝日を考

    Microsoft Project を使用する際のメモ
  • SQL Server でデータベース単位にクエリを実行したい場合の方法

    実行すると以下のような結果を取得することができます。 ストアドプロシージャーを実行すると ? のパラメーターにデータベース名が入りますので、これを利用してデータベース単位にクエリを実行することができるようになります。 実際にどのようなクエリが実行されているかを確認してみます。 /* * The following table definition will be created by SQLDMO at start of each connection. * We don't create it here temporarily because we need it in Exec() or upgrade won't work. */ create proc sys.sp_MSforeachdb @command1 nvarchar(2000), @replacechar nchar(1

    SQL Server でデータベース単位にクエリを実行したい場合の方法
    JHashimoto
    JHashimoto 2013/12/15
    "ストアドプロシージャーを実行すると ? のパラメーターにデータベース名が入りますので、これを利用してデータベース単位にクエリを実行することができるようになります。"
  • Codeplex の Internals Viewer for SQL Server を使ってみる

    昨日、facebook で少し話題になり、今の対応状況はどうなっているのだろうと思って調べてみました。 Internals Viewer for SQL Server は Codeplex で公開されているツールで、その名の通り SQL Server のページ情報やトランザクションログの内部情報を見るためのツールです。 複数のクエリや内部でチェックポイントを手動で実行したりしているようなので、番環境での利用はおすすめできませんが、SQL Server のデータの格納方法を検証環境を使用して勉強するためには便利です。 以前は、Internals Viewer for SQL Server で公開されており、こちらは SQL Server 2005 / 2008 の SSMS 向けのものとなっていました。 現在は、Internals Viewer (updated) for SQL Serv

    Codeplex の Internals Viewer for SQL Server を使ってみる
    JHashimoto
    JHashimoto 2013/09/19
    "Internals Viewer for SQL Server は Codeplex で公開されているツールで、その名の通り SQL Server のページ情報やトランザクションログの内部情報を見るためのツールです。"
  • SQL Server の参照整合性制約の状態を取得

    SQL Server で参照整合性制約 (Foreign Key 制約) が設定され、明示的にテーブル間のリレーションが設定されているかの情報を SSMS だとデータベースダイアグラムを作成することで確認することができます。 # 参照整合性制約が設定されているとテーブル間の JOIN をした際の効率性が (NULL の判断の最適化) 変わるはずなので、リレーション設定はいろいろなドキュメントで推奨されているかと。 似たような情報を SQL で取得するためのクエリを書いてみました。 取得するためのクエリが以下になります。 WITH foreign_key_table AS ( SELECT so.name table_name , so.object_id table_object_id , fk.key_index_id , OBJECT_NAME(fk.object_id) parent

    SQL Server の参照整合性制約の状態を取得
    JHashimoto
    JHashimoto 2013/05/27
    "似たような情報を SQL で取得するためのクエリを書いてみました。"
  • オブジェクトの情報を取得するテーブル等

    たんたかさんの カラム名検索でテーブル検索 を見てなるほどと思ったので少しまとめてみたいと思います。 SQL Server では オブジェクト カタログ ビュー があり、このビューを確認することによりさまざまなオブジェクトの情報を確認することができます。 冒頭で紹介したたんたかさんのブログでは、 sys.objects sys.columns を使用してカラム名やデータ型を取得していました。 よく使うものとして以下のようなオブジェクト カタログビューがあります。

    JHashimoto
    JHashimoto 2013/05/12
    "オブジェクトカタログビューやメタデータ関数は SQL Server 特有のものですが、ISO 標準定義のINFORMATION_SCHEMA を使用して各種情報を取得することもできます。"
  • SQL Server のトレースを XPerf で取得してみる

    Windows Performance Analysis Toolkit (WPT) に含まれている XPerf を使用するとトレースデータを取得することができます。 このツールを使用して SQL Server のトレースを取得するための手順を勉強しながら少しまとめてみました。 XPerf に関しては以下の情報が参考になります。 Xperf Command-Line Reference Troubleshooting SQL Server High CPU usage using Xperf Identifying the cause of SQL Server IO bottlenecks using XPerf Diagnose High CPU on Windows with XPerf Stack Walking in Xperf WPA とか XPerf とか 第1回 OS機能に

    SQL Server のトレースを XPerf で取得してみる
    JHashimoto
    JHashimoto 2013/05/05
    "Windows Performance Analysis Toolkit (WPT) に含まれている XPerf を使用するとトレースデータを取得することができます。 "
  • SQLIOSIM を使用したストレステストの実施

    SQL Server には SQLIOSIM というストレステストを実施するためのツールが提供されています。 SQLIOSim ユーティリティを使用して、ディスク サブシステム上の SQL Server アクティビティをシミュレートする方法 このツールは SQL Server をインストールしなくても SQL Server と同等の I/O パターンをシミュレートしてストレージに対して負荷をかけることができるツールとなっています。SQL Server 2005 までは別途ダウンロードする必要があったのですが、SQL Server 2008 以降はインスタンスのディレクトリに標準で含まれるようなりました。 ただし標準で含まれている SQLIOSIM のコンポーネントには、サンプルの構成ファイル群 (sqliosim.cfg.zip) が含まれていませんので、これらのファイルが使用したい場合に

    SQLIOSIM を使用したストレステストの実施
    JHashimoto
    JHashimoto 2013/04/08
    "このツールは SQL Server をインストールしなくても SQL Server と同等の I/O パターンをシミュレートしてストレージに対して負荷をかけることができるツールとなっています。"
  • バランスの取れた I/O 構成の環境

    機能についての話ではありませんが、ちょっと考えを整理するためのメモとして。 データベースサーバー以外でもそうだと思いますがサーバーを利用する際の基的な構成は以下のようになるかと思います。 サーバー上でアプリケーションを実行している場合はネットワークは経由しませんが、外部でアプリケーション (サーバーを利用するリソース) が動作している場合、サーバーからの情報はネットワークを介して行われます。 また、接続の形態は SAS/SATA や PCI-e の HBA 等いろいろとありますが何かしらの方法でストレージ (記憶媒体) まで接続がされています。 バランスの取れた I/O 構成を考える場合、これら全体のバランスがどうなっているかを考慮する必要が出てきます。 たとえば、ストレージまでの接続が、 PCI Express 2.0 x4 PCI Express 2.0 x8 で行われている場合、バ

    バランスの取れた I/O 構成の環境
    JHashimoto
    JHashimoto 2013/03/13
    "バスの帯域が確保できていてもストレージの性能上限以上は I/O を出すことはできませんので、ストレージの性能以上のバス帯域を確保していても有効に活用できません。"
  • SQL Server でメモリが不足するとどのようなことが起きる – データキャッシュ –

    twitterSQL Server Express Edition では 1GB のメモリ制限があるが実際どのような影響があるかという話題がでました。 データキャッシュについてになりますがどのような影響が出るかを軽くまとめてみたいと思います。 今回は以下のように 4.6GB 程度のデータを格納したテーブルを用意しています。 このテーブルを使用して以下のようなクエリーを実行してみます。 SET STATISTICS IO ON SET NOCOUNT ON DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS DBCC FREEPROCCACHE WITH NO_INFOMSGS exec sp_configure ‘max server memory (MB)’, 2147483647 reconfigure GO DECLARE @ProcTime date

    SQL Server でメモリが不足するとどのようなことが起きる – データキャッシュ –
    JHashimoto
    JHashimoto 2013/01/22
    "データベースのサイズ = メモリサイズになっていればすべてのデータがキャッシュできますので、高速にアクセスができますがそうなっていない場合はディスク I/O が発生してきます"
  • 日本語環境の SQL Server で HammerDB の TPC-H を実行

    SQL Server のベンチマークソフトとしては、SQLIOSIMSQLIO がありますが、 これらのソフトは SQL Server と同様の I/O パターンを SQL Server をインストールしなくても試すことができるツールになります。 SQL Server をインストールした後にベンチマークを行いたい場合には、私は HammerDB という TPC のベンチマークができるソフトを使用しています。 日語環境の OS / SQL Server で HammerDB の TPC-H のベンチマークを実行する際に少し注意する点がありましたのでメモとして残しておきたいと思います。 TPC-C を実行した場合は、特にエラーにはならなかったのですが、TCP-H を実行した場合にはテスト用のスキーマを作成している途中でエラーとなってしまいました。 エラーを解消するためには ODBC の

    日本語環境の SQL Server で HammerDB の TPC-H を実行
    JHashimoto
    JHashimoto 2013/01/22
    "SQL Server のベンチマークソフトとしては、SQLIOSIM や SQLIO があります。" "私は HammerDB という TPC のベンチマークができるソフトを使用しています。"
  • SQL Server インストール後に外部からの接続をするための設定

    SQL Server をインストールした後に外部の端末から接続をできるようにするための一連の設定になります。 今までまとめたことが無かったので。 ■構成マネージャーの設定 エディションにもよるのですがデフォルトでは [TCP/IP] が無効になっていることがあります。 SQL Server 構成マネージャーから対象のインスタンスの [TCP/IP] を有効にします。 インスタンス単位で設定する必要があるので複数のインスタンスを実行している場合は各インスタンスに対して設定を行います。 設定が終了したら SQL Server のサービスを再起動すると TCP/IP による接続が許可されます。 ■ファイアウォールの設定 外部からの接続を許可するためにファイアウォールで SQL Server が使用するポートを許可する必要があります。 SQL Server では、[既定のインスタンス] と [名前

    SQL Server インストール後に外部からの接続をするための設定
    JHashimoto
    JHashimoto 2012/05/22
    "SQL Server をインストールした後に外部の端末から接続をできるようにするための一連の設定になります。 今までまとめたことが無かったので。"
  • SQL Server のデータ圧縮のサイズ見積もりを複数テーブルを対象に実施

    SQL Server 2008 移行で実装されたデータ圧縮ですが、圧縮後のサイズ見積もりを SSMS で調べることができます。 データ圧縮対象のテーブル / インデックスを選択し、ウィザードを使用して、サイズの見積もりをすることができるのですが、見積もりはテーブルまたはインデックスを選択して実行する必要があるため、一つのオブジェクトに対してしか見積もることができません。 この圧縮時の見積もりを複数のオブジェクトに対して実行してみるというのが今回の内容になります。 ■複数のオブジェクトに対してデータ圧縮の見積もりを実施 データ圧縮の見積もりですが、[sp_estimate_data_compression_savings] を使用して実行されています。 そのため、このストアドプロシージャをカーソル等を使用して、複数のオブジェクトに対して実行することで複数のデータ圧縮の見積もりを取得することが

    SQL Server のデータ圧縮のサイズ見積もりを複数テーブルを対象に実施
    JHashimoto
    JHashimoto 2011/11/12
    "このストアドプロシージャをカーソル等を使用して、複数のオブジェクトに対して実行することで複数のデータ圧縮の見積もりを取得することがかのうです。"
  • 1