トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Option Compare Database
【認証モードの変更およびパスワードの設定プログラム】

このプログラムは MSDE2000 などを WindowsNT/2000系にインストールした直後のログイン認証モードを、Windows認証から混合モードに 変更するものです。
混合モードにすることによってセキュリティ上の不安はありますが、皆様が慣れ親しんでいる sa ログイン名が使えるようになります。
SQLServer2000系のデフォルトログイン認証は Windows認証であり、7.0バージョンの混合モードとは異なります。
またこのプログラムでは、saログインにパスワードを設定しています
'
このプログラムを実行するときは、参照設定に Microsoft SQLDMO Object Library が必要です。
'
このプログラムは、Windows2000 Professional版 + Access2002 + OfficeXP付属MSDE2000の環境で実行しているため、MSDE2000はローカルサーバー扱いです。
またこのVisualBasicプログラムは Access2002の標準モジュールに組み込んで実行しています。
'
なお、Windows95/98/Me系にMSDE2000を導入している場合は、最初から混合モード(SQLServer認証)となっています。
'
【作成:(株)日本技術ソフト開発 堀川 明】
'

Sub SetSecurityMode()
    'SQLServerを操作するためのオブジェクトです
    Dim oSQLServer As New SQLDMO.SQLServer

    'セキュリティモードを操作するためのオブジェクトです
    Dim oSQLIntegratedSecurity As SQLDMO.IntegratedSecurity

    '現在動作している環境が、WindowsNT系ですか?
    If oSQLServer.IsOS(SQLDMO_WIN95) Then
        MsgBox "現在動作しているSQLServerは、Windows95/98/Me系で動作しています" & vbCrLf & _
            "ログイン認証は、SQLserver自身が行っています"
        Exit Sub
    ElseIf oSQLServer.IsOS(SQLDMO_WINNT) Then
        MsgBox "現在動作しているSQLServerは、WindowsNT/2000系で動作しています"
    End If

    'Windows認証で接続を行います
    oSQLServer.LoginSecure = True
    oSQLServer.Connect

    'IntegratedSecurityオブジェクトを取得します
    Set oSQLIntegratedSecurity = oSQLServer.IntegratedSecurity

    '現在のサーバーの認証モードを調べてみます
    Select Case oSQLIntegratedSecurity.SecurityMode
        Case SQLDMO.SQLDMOSecurity_Normal '=0
            MsgBox "データベースサーバーは、SQLServer認証のみを許可します"
        Case SQLDMO.SQLDMOSecurity_Integrated '=1
            MsgBox "データベースサーバーは、Windows認証のみを許可します"
        Case SQLDMO.SQLDMOSecurity_Mixed '=2
            MsgBox "データベースサーバーは、混合モードです"
    End Select

    'サーバーの認証モードを強制的に混合モードに変える
    oSQLIntegratedSecurity.SecurityMode = SQLDMOSecurity_Mixed

    '接続を閉じる
    oSQLServer.Disconnect

    '注意メッセージの表示
    MsgBox "SQLServerの認証モードを混合モードに変えました" & vbCrLf & _
        "混合モードを有効にするためには、データベースサービスの再起動が必要です"

    'サービスの停止をSQLDMOでは、次の命令になります。
    oSQLServer.Stop
    MsgBox "SQLServer関連サービスをすべて停止にしました"

    'サービスの開始は、次のようになります
    oSQLServer.Start False

    'sa管理者でログインを試みる
    oSQLServer.LoginSecure = False    'SQLServer認証を使う
    oSQLServer.Connect "(local)", "sa", ""

    MsgBox "SQLServerサービスを開始しました" & vbCrLf & _
        "ログイン名:sa パスワード:なしでログインできました" & vbCrLf & _
        "saにパスワードがありません。非常に危険です"

    'saのパスワードを変更します
    oSQLServer.Logins("sa").SetPassword "", "sa-password"

    '接続を解除して再接続を行う
    oSQLServer.Disconnect

    'パスワードが正しく変更されましたか?
    oSQLServer.LoginSecure = False    'SQLServer認証を使う
    oSQLServer.Connect "(local)", "sa", "sa-password"

    MsgBox "sa管理者パスワードを変更しました。" & vbCrLf & _
        "新しいパスワードは、" & oSQLServer.Password & " です"

    '接続を閉じる
    oSQLServer.Disconnect
end sub



<< 前へ
◆PAGE LINK  |  |  |  |  |  |  |  |  |  | 10 | 11 | コラム | OPTION 

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.