管理者向け PowerShell で SMO を使う 2014.1.25 SQLWorld 大阪 #20.

Slides:



Advertisements
Similar presentations
1 実技演習1 2008/01/28,29 JaLTER Morpho 講習会. 2 起動・接続 各自、コンピュータを起動してネットワーク に接続してください。 各自、コンピュータを起動してネットワーク に接続してください。 IP アドレス自動取得 IP アドレス自動取得 無線 LAN 使用可 無線.
Advertisements

PowerShell ハンズオン 2012/03/24 第 27 回.NET 勉強会 / ヒーロー島 牟田口大介.
1 Layout Utilities の紹介 Layout Utilities とは、お客様のプログラムに 流し込み印刷を簡単に組み込めるソフトウエア開発ツールです 無償 流し込み印刷の例.
0 クイックスタートガイド|管理者編 スマートデバイスのビジネス活用を支援する法人向けファイル共有サービス.
Cygwin 上の inetd /etc/inetd.conf /etc/inetd.conf 環境変数 CYGWIN と PATH の確認 環境変数 CYGWIN と PATH の確認 サービスへの登録と起動 サービスへの登録と起動 ftp サービスへのアクセスの確認 ftp サービスへのアクセスの確認.
Accessによるデータベース(1) Ver.1 /11.
ASP入門 - Windows 2000 Server 活用 -.
IIS 4.0で開発をするコツ Webアプリケーション構築.
実習1:コマンドシェルの使い方.
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
揮発性情報 2003/05/25 伊原 秀明(Port139).
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
JPAを利用した RESTful Webサービスの開発
SQLエディタによる データベースプログラミング
東京工科大学 コンピュータサイエンス学部 亀田弘之
SAP システムにおける SQL Server 運用ノウハウ
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
Linux リテラシ 2006 第2回 基本コマンド2.
VO講習会2013春 VOツール使用法(1) TOPCAT 国立天文台 天文データセンター 小宮 悠.
PHPエディタによる 情報システム演習 01.
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
続 Entity Framework 入門 SQLWorld #8 サヴロウ.
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
HTTPプロトコルとJSP (1) データベース論 第3回.
クラシック音楽普及プロジェクト KG:mao B3 wakutin.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
実習1:コマンドシェルの使い方.
 データベースによる並列処理 情報論理工学研究室  三宅健太.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
Cygwin の install.
サーバー立ち上げ記 2009/5/23
データベース設計 第9回 Webインタフェースの作成(1)
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
データベースとJavaをつなげよう! ~JDBC~
サスペンドした仮想マシンの オフラインアップデート
SQL パフォーマンス チューニング ~ カバーリングインデックス/クエリヒントの利用~
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
SQL パフォーマンス チューニング ~ プランガイドの利用~
Windows PowerShell Cmdlet
マイクロソフト Access での SQL 演習 第5回 副問い合わせ
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
スマートデバイスのビジネス活用を支援する法人向けファイル共有サービス
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
~let's take fun when you can do it~
JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 /
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
~目次~ Ⅰ.動作環境 Ⅱ.ファイルのダウンロード Ⅲ.システムのインストール Ⅳ.初期設定 Ⅴ.アンインストール
統計ソフトウエアRの基礎.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
再帰CTE を使って遊ぼう 大阪#9 2012/04/14.
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
TableAdapterとSQLDependency 便利さを使い倒そう。 by えムナウ
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
Molecular Devices Japan
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
中上級編 vol. 3 前編: SQLDiag ツールの利用
クリエイティブ リサーチ 2019/05/20 日本工学院八王子専門学校 M.Katsube.
Presentation transcript:

管理者向け PowerShell で SMO を使う SQLWorld 大阪 #20

PowerShellとは?.NET Framework ベースの高機能なコマンドライン実行環境 Windows7 からは OS 導入時点で利用可能となっている 従来のコマンドプロンプトの出力がテキストであるのに対し、出力が.NET のオブジェクトである また PS スナップインという DLL を読み込むことで、機能拡張が可能となっている 今回は sqlps という PS スナップインを読み込むことで利用可能となる SQLServer Management Objects (SMO) という SQLServer 管理用のクラス群を使い、どんなことができるのか試してみま した。

PowerShellの使用例(wikipediaより) 100MB 以上のメモリを占有するプロセスを表示する Get-Process | Where { $_.WS -gt 100MB } ディレクトリ中に含まれる全ファイルの合計サイズを計算して出力する Get-Childitem | Measure-Object -property length –sum 文字列に含まれる小文字を大文字に変換する "hello, world!".ToUpper()

SMOを使うための準備 SMO を使う為には SQLServer または SSMS のインス トール時に「クライアントツール SDK 」をインストールしてお く必要があります。 また、 PowerShell で接続する場合、 Windows 認証に よる信頼接続が必須ですので、 PoserShell を実行する ユーザーが SQLServer に登録されている必要があります。

データベースへの接続まで PowerShell を起動し、スナップインを読み込む Import-Module sqlps ( ipmo sqlps でも可) PS C:\> ⇒ PS SQLSERVER:\> のように現在のディレクトリ表示が変化します。 Set-Location ( cd でも可)で以下の場所に移動します。 SQL\ サーバ名 \ インスタンス名 (既定のインスタンスを使用している場合は DEFAULT と指定)

Sqlpsで使用するシステム変数について Sqlps が参照する固有のシステム変数の値でコマンド実行時の動作が変化する $SqlServerMaximumTabCompletion : PowerShell のタブ補完で表示する候補数。規定値は 0 $SqlServerMaximumChildItems : Get-ChildItem で取得する子要素の数。規定値は 0 $SqlServerIncludeSystemObjects :システムオブジェクトの表示有無。規定値は $false

インスタンスに関しての情報の取得 インストール時の情報を表示する $inst = get-item.\ $inst.Settings サーバーオプションを表示する $inst.Configuration.Properties|Select-Object DisplayName, RunValue ソフトフェアの情報を表示する $inst.Information ログインに付与されたサーバロールを表示する gci.\Logins|%{$Login=$_;$_.ListMembers()|%{"{0}, {1}" -f $Login.Name, $_}}

データベースに関する情報の取得 データファイルに関する情報を一覧表示 cd.\Databases\AdventureWorks2012 (get-item.).FileGroups|%{$_.Files|select FileName, Growth, GrowthType, MaxSize, Size, UsedSpace|ft -auto} ログファイルに関する情報を一覧表示 (get-item.).LogFiles|select FileName, Growth, GrowthType, MaxSize, Size, UsedSpace|ft –auto 全データベースのマッピングユーザーとデータベースロールを表示 cd.. gci|%{$db=$_;$_.Users|%{$usr=$_;$_.enumRoles()|%{"{0},{1},{2}" -f $db.Name,$usr.Name,$_}}} 全データベースのマッピングユーザーと権限の表示 gci|%{$db=$_;$db.Users|%{$usr=$_;$db.EnumdatabasePermissions($usr.Name)|%{"{0},{1},{2},{3}" -f $db.Name,$usr.Name,$_.PermissionType,$_.PermissionState}}}

テーブルに関する情報の取得 テーブルの行数が多い順に名前の一覧を表示する $tbls = Get-ChildItem.\AdventureWorks2012\tables $tbls | Sort-Object RowCount -Descending | Select-Object Schema, Name, RowCount インデックスを持っていないテーブルを表示する $tbls | Where-Object { $_.HasIndex -eq $false } | Select-Object Schema, Name money 型の列を持つテーブルのスクリプト (DDL )を出力する cd.\AdventureWorks2012\Tables gci.|%{$tbl=$_;$_.Columns|?{$_.DataType.Name -eq "money"}|measure|?{$_.Count -gt 0}|%{$tbl.Script()}}

ストアドプロシージャに関する情報の取得 「 Person 」という文字列を含むストアドプロシージャの DDL を出力する cd SQLSERVER:\SQL\LOCALHOST\DEFAULT\Databases\AdventureWorks2012 (get-item.).StoredProcedures|?{$_.schema –ne ‘sys’ –and ($_.Script()) -match '.*Person.*'}|%{$_.Script()}

おまけ:Sqlpsで使用可能なコマンドレット PowerShell には SQLServer 用として「 Invoke-SqlCmd 」と言うコマンドレットがあり、クエリの実行結果を 取得できます。 以下は Person.Person テーブルの内容を CSV 出力する例です。 cd c:\waka Invoke-Sqlcmd -ServerInstance LOCALHOST -Database AdventureWorks2012 -Query “select * from person.person” | export-csv.\person.csv また「 Backup-SqlDatabase 」というコマンドレットでデータベースのバックアップが取得できます。 Backup-SqlDatabase -ServerInstance localhost -Database AdventureWorks BackupAction Database -BackupFile c:\waka\aw2012.bak -CompressionOption On

おまけ:SMOのオブジェクトモデル

まとめ 今回、 PowerShell から SQLServer の管理用オブジェクトである SMO を利用してみました。 しかし、今回試した限りは SSMS からクエリで管理する方が慣れている分やりやすい気がしました(笑) SMO を手軽に利用するには便利ですが、 SMO 自体がオブジェクト階層をよく理解していないと見たい 情報を見るのも結構大変かもしれません。 活用するとすれば以下のようなケースくらいでしょうか・・・ ・複数のインスタンスに同じスクリプトでアクセスして設定情報をテキストファイルに保存する ・ SQLServer 内のオブジェクトを特定の条件でピックアップし、スクリプトをチェックしたい ・テーブルの件数や、データベースの容量の様な動的に変動する値を定期的に自動チェックする等 何か面白い使い方がありましたら教えてください

ご清聴ありがとうございました