MS SQL2008R2をコマンド操作するTips

■MSSQL2008R2 のテーブルを見る。

 ※今回は不真面目なTipsですw。

■時間のかかる「systeminfo」コマンドでOS名を取得する。

> systeminfo | find "OS 名"
OS 名: Microsoft Windows Server 2008 R2 Standard

■「regrep.exe」を導入する

 VectorからWindows版regrepをダウンロード

 http://www.vector.co.jp/soft/win95/util/se306011.html

動作OS: XP,WinMe,Win2000,Win98,WinNT 
機種: 汎用  
種類: フリーソフト 
作者: J-SON 

※「regrep.exe」のみDOSコマンドから使用するので、64bit対応等は不要です。

■レジストリからインストール済みのアプリケーションの一覧を取得する。

> reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s | find "DisplayName"> d:\install_list.txt
> D:\rr110\regrep D:\ install_list.txt "DisplayName REG_SZ " ""
rep: 39 Count(s) replaced. D:\install_list.txt
res: 1 File(s) proccessed.

> type c:\install_list.txt | find /i "symantec"
Symantec Backup Exec (TM) 2010 R3
Symantec Backup Exec
Symantec Backup Exec (Hotfix 158028)
ParentSymantec Backup Exec (TM) 2010 R3

★上記のような見方が面倒だという人は「appwiz.cpl」でも叩いて下さい。
 「アプリの名前を残す」という意味ではレジストリの方が優れているはずです。

⇒一覧からBE2010R3が見えます。

■起動中のサービスからBE2010R3のバックグラウンドのDBを見る。

> net start | find "SQL"
SQL Full-text Filter Daemon Launcher (MSSQLSERVER)
SQL Server (BKUPEXEC)
SQL Server (MSSQLSERVER)
SQL Server Agent (MSSQLSERVER)
SQL Server Analysis Services (MSSQLSERVER)
SQL Server Browser
SQL Server Integration Services 10.0
SQL Server Reporting Services (MSSQLSERVER)
SQL Server VSS Writer

★「sc」コマンドで見る

> sc GetKeyName "SQL Server (BKUPEXEC)"
[SC] GetServiceKeyName SUCCESS
名前 = MSSQL$BKUPEXEC

★え?32bit?ww

> sc qc MSSQL$BKUPEXEC
QueryServiceConfig SUCCESS

SERVICE_NAME: MSSQL$BKUPEXEC
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "c:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sBKUPEXEC
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : SQL Server (BKUPEXEC)
DEPENDENCIES :
SERVICE_START_NAME : LocalSystem

⇒一応。。。MS SQL2008R2(64bit)です。
 バックグラウンドでは32bitということでしょうか。
 BE2010R3インストール時には、SQL2005EXPRESSのインストーラを要求されましたし。。。

> type c:\install_list.txt | find "R2" | find "64"
Microsoft SQL Server 2008 R2 (64 ビット)
Microsoft SQL Server 2008 R2 (64 ビット)

■簡単なチェック

★ログインします。

> sqlcmd -Usa
パスワード:

★ヘルプの見方

1> :help

★アクセス可能なサーバの一覧を取得

1> :serverlist

サーバー:
2008R2
2008R2\BKUPEXEC

⇒MS SQL自身のDBとBEのDBです。
 ※「2008R2」はホスト名です。

■デフォルトの変数を確認する
 
1> :listvar
SQLCMDCOLSEP = " "
SQLCMDCOLWIDTH = "0"
SQLCMDDBNAME = ""
SQLCMDEDITOR = "edit.com"
SQLCMDERRORLEVEL = "0"
SQLCMDHEADERS = "0"
SQLCMDINI = ""
SQLCMDLOGINTIMEOUT = "8"
SQLCMDMAXFIXEDTYPEWIDTH = "0"
SQLCMDMAXVARTYPEWIDTH = "256"
SQLCMDPACKETSIZE = "4096"
SQLCMDSERVER = "R2"
SQLCMDSTATTIMEOUT = "0"
SQLCMDUSER = "sa"
SQLCMDWORKSTATION = "2008R2"

■スキーマからテーブルの一覧を取得する。

1> select table_name from information_schema.tables
2> go
table_name
---------------------------------------------------------
spt_fallback_db
spt_fallback_dev
spt_fallback_usg
spt_monitor
spt_values
MSreplication_options

■テーブルの中身をファイルに出力

1> select * from spt_values
2> :out c:\testdb.txt
2> go
1> exit

■テーブル見出しを取得

> type c:\testdb.txt | find "name"
name \number \type\low \high \status

■長いので、「backup」(大文字/小文字区別無し)だけ切り出して出力します。

> type c:\testdb.txt | find /i "backup"
DB Backup Operator \ 16389\DBR \ -1\ NULL\ 0
Backup Database \ 228\T \ NULL\ NULL\ 0
Backup Transaction \ 235\T \ NULL\ NULL\ 0
backup device \ 16\V \ NULL\ NULL\ 0

※sqlcmd内では、「!!」でコマンド実行出来ます。

■vim(64bit)を導入する(解凍するだけ)

http://www.kaoriya.net/news/20111027

■下記のようなフォルダ構成になるので、
 「vim73-kaoriya-win64」のフォルダを残したまま「d:\vim」に移動します。
 SQL内で実行します。

1> !! d:\vim\vim.exe test.sql

★以下2行を保存

select table_name from information_schema.tables
go

★これで簡単に取得出来ます

2> :r test.sql
table_name
--------------------------------------------------------------
spt_fallback_db
spt_fallback_dev
spt_fallback_usg
spt_monitor
spt_values
MSreplication_options

(6 行処理されました)

■telnetがインストールされていることを確認。

> servermanagercmd -query | find "Telnet"
[X] Telnet クライアント [Telnet-Client]
[X] Telnet サーバー [Telnet-Server]

★「servermanagercmd -i "Telnet-Server"」でインストールは可能だが、
 MSからのサポートはされていないとのこと。その場合はpowershellを使う。

> powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS > import-module servermanager
PS > get-windowsfeature Telnet-Server

Display Name Name
------------ ----
[X] Telnet サーバー Telnet-Server

★追加の方法は以下で確認します

> get-help add-windowsfeature

※「servermanager.msc」を起動しても構いません。
 私のようなGUIアレルギーの方向けです。

■Telnet Serverを起動する

★キー名の取得

> sc GetKeyName "Telnet"
[SC] GetServiceKeyName SUCCESS
名前 = TlntSvr

★自動起動の設定

> sc config "TlntSvr" start= auto
[SC] ChangeServiceConfig SUCCESS

★起動してPIDを確認する

> sc start "TlntSvr"

SERVICE_NAME: TlntSvr
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
PID : 4984
FLAGS :

★「net」コマンドでも

> net start | find "Telnet"
Telnet

★タスクをチェック

> tasklist | find /i "4984"
tlntsvr.exe 4984 Services 0 4,592 K

★キー名からでも

> tasklist | find "tlntsvr"
tlntsvr.exe 4984 Services 0 4,592 K

■突然ですが、vmplayerのhost-onlyのネットワークなので、トンネルを掘ります。

$ ssh -X -p 8022 -g -L 8023:172.16.5.199:23 172.16.5.1

■telnet経由でコントロールします。

cmd.exe

> telnet host-server-ip 8023
> sqlcmd -Usa
パスワード:
1> :r test.sql
table_name

---------------------------------------------------------
------------------------------------------------
spt_fallback_db
spt_fallback_dev
spt_fallback_usg
spt_monitor
spt_values
MSreplication_options

(6 行処理されました)
1> exit

今日はここまで。。。