SQL Server PowerShellとはPowershellからSQL Serverを管理するためのツールセット(実体は、いくつかのコマンドレットとプロバイダー、環境変数、型定義等)である。
SQL Server2008をインストールすると一緒にインストールされる。(R2の場合はインストール時の機能選択で管理ツールを選ぶとインストールされるようだ)
Expressでもwith Advanced Services 版をインストールすれば使える。
一番簡単な使い方はコマンドラインから「sqlps」と打ち込む。
するとSQL Server用の機能が組み込まれたPowershellが起動する。
SQLプロバイダーがルートになっているのでdirコマンドを打つと以下のような内容が表示される。
この中身をまた潜っていくとTableやColumnが現れる。
というように、SQLプロバイダーのおかげでSQL Serverも通常のファイルツリーの様にアクセスが可能になっている。
あとはこれらのオブジェクトを使って様々な情報を引き出せば良い。
以下を参考にサンプルを作ってみた。
SQL Server PowerShell を使用した管理手法 第 2 回 実践編
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 | $server = get-item SQLSERVER:\sql\localhost\sqlexpress\databases $dbinfos = @() $fmt = "#,##0.0" #データベースの数だけ繰り返し foreach ( $db in $server.Collection ) { $dbinfo = New-Object PsObject | select データベース名,DB,空き, データ,インデクス #データベース名 $dbinfo.データベース名 = $db.Name #DBの容量 $dbinfo.DB = $db.Size.ToString($fmt) + "MB" #DBの空き容量 $dbinfo.空き = ($db.SpaceAvailable / 1024).ToString($fmt) + "MB" #データの容量 $dbinfo.データ = ($db.DataSpaceUsage / 1024).ToString($fmt) + "MB" #インデックスの容量 $dbinfo.インデクス = ($db.IndexSpaceUsage / 1024).ToString($fmt) + "MB" $dbinfos += $dbinfo } $dbinfos | ft -Auto |
ちなみに、スクリプトファイルを実行するときは、
sqlps -noexit -command "d:\desktop\db.ps1"
の様に起動してあげれば良い。
0 件のコメント:
コメントを投稿