2008年11月20日木曜日

VBScriptからSQLSERVERに接続する(ADO)

WindowsServer の運用管理で、ちょっと SQLServer から情報もってきたい時に VBScript(やWSH) でDBに接続できたら都合がいい。
 
 

ADO(ActiveX Data Object) とかいうやつを使ってちょっとクエリを流そうという時のメモ。
 
 

サンプル:SQLServer上に設定されている、サーバのホスト名を取ってくる


大体が [Master] の [sysservers] に1行あるレコードがローカルサーバ情報。サンプルでは一応複数あった場合の処理をさせてる。
 

下記を拡張子VBSで保存して実行する。
[sourcecode language='vb']
Private cn ,rs

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

'// ADODBでSQLOLEDBに接続、この場合ユーザはログイン中のものを使う
cn.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=msdb;Integrated Security=SSPI;"
'// SQLのクエリを書いてレコードセットを取得する
rs.Open "SELECT [SrvName] FROM [Master].[dbo].[sysservers] WHERE [srvid] = '1'", cn


'// レコードセットを1行づつ処理する
Do While Not rs.EOF
Wscript.echo rs("SrvName")
rs.MoveNext
Loop
'// レコードが一行ならこれでもOK
'// Wscript.echo rs("SrvName")

rs.Close
cn.Close

Set cn = Nothing : Set rs = Nothing

Wscript.Quit
[/sourcecode]
 

sysdatabaseからデータベースの一覧とかを持ってくるのも簡単。
SELECT以外の文は結果がどうなるのかは試してないけど、多分単純に結果コードが帰って来るんだと思う。
 

まぁ更新系を使う場合はVBScriptとかじゃないよね、と思う。