Hatena::Groupvbscript

SQLDMO.SQLServer

主要な Windows 標準コンポーネントの一覧 → http://vbscript.g.hatena.ne.jp/keyword/ProgID
VBScript 基礎文法最速マスター → http://vbscript.g.hatena.ne.jp/cx20/20100131/1264906231

SQLDMO.SQLServer

概要

SQLDMO.SQLServerSQL-DMO(SQL Distributed Management Object) の SQL Server オブジェクトを表す ProgID です。

SQL-DMO を用いることで SQL Server の管理作業等を自動化することが可能です。

サンプル

' File : ExportSpToFile.vbs
' Usage : CScript //Nologo ExportSpToFile.vbs
' Description : VBScript から SQL-DMO を使用し DB の SP をテキスト出力するサンプル
Option Explicit

Const SQLDMOScript_Default = 4 
Const SQLDMOScript2_Default = 0

Call Main()

Sub Main()
    Dim dmoServer
    Set dmoServer = CreateObject("SQLDMO.SQLServer2")

    Dim strSERVER
    Dim strDBNAME
    Dim strUID
    Dim strPWD
    
    strSERVER = "(local)"          ' 接続先のサーバー名
    strDBNAME = "AdventureWorks"   ' 接続先の DB 名
    strUID    = "sa"               ' DB アカウント(SQL Server 認証の場合)
    strPWD    = "password"         ' DB パスワード(SQL Server 認証の場合)
    Call dmoServer.Connect( strSERVER, strUID, strPWD )
    
    Dim strOutPath
    strOutPath = "C:\home\edu\VBScript\SQLDMO.SQLServer\" ' スクリプト出力先
    Call ExportSpToFile( dmoServer, strDBNAME, strOutPath )
End Sub

Sub ExportSpToFile( dmoServer, strDatabase, strOutPath )
    Dim dmoDatabase
    Set dmoDatabase = dmoServer.Databases( strDatabase )

    Dim strFileName
    Dim strSpName
    Dim sp
    For Each sp In dmoDatabase.StoredProcedures
      strSpName = sp.Name
      DebugPrint strSpName
      strFileName = strOutPath & strSpName & ".sql"
      Call sp.Script( SQLDMOScript_Default, strFileName, SQLDMOScript2_Default )
    Next
End Sub

Sub DebugPrint( strMessage )
    ' WSH で実行する場合
    WScript.Echo strMessage
    ' VBA で実行する場合
    ' Debug.Print strMessage
End Sub

実行結果

uspGetBillOfMaterials
uspGetEmployeeManagers
uspGetManagerEmployees
uspGetWhereUsedProductID
uspLogError
uspPrintError
uspUpdateEmployeeHireInfo
uspUpdateEmployeeLogin
uspUpdateEmployeePersonalInfo

参考情報