首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 驗證模式程式化管理:SQL-DMO 登入、Windows 驗證切換與模式變更完整代碼 (VBA)

     編輯:關於SqlServer

前言

SQL-DMO (Distributed Management Objects) 允許在 VBA/VB/ASP 中程式化管理 SQL Server。本文提供三個核心功能的完整 VBA 實作:SQL Server 驗證登入、Windows 整合驗證登入、變更伺服器驗證模式。

參考設定

VBA 編輯器 → 「工具」→「參考」→ 勾選 Microsoft SQLDMO Object Library。

核心程式碼模組

1. SQL Server 驗證登入 (SQLDMOSQLServerLogin)

Sub SQLDMOSQLServerLogin(srvName As String, suid As String, pwd As String)
    Dim srv As SQLDMO.SQLServer
    Set srv = New SQLDMO.SQLServer
    On Error GoTo ErrHandler
    srv.Connect srvName, suid, pwd
    MsgBox "SQL Server 驗證登入成功: " & srvName
    srv.Disconnect
    Exit Sub
ErrHandler:
    MsgBox "登入失敗: " & Err.Description
    Resume Next
End Sub

2. Windows 整合驗證登入 (SQLDMOWindowsLogin)

Sub SQLDMOWindowsLogin(srvName As String)
    Dim srv As SQLDMO.SQLServer
    Set srv = New SQLDMO.SQLServer
    On Error GoTo ErrHandler
    srv.LoginSecure = True  ' 關鍵:啟用信任連接
    srv.Connect srvName     ' 僅傳遞伺服器名稱
    MsgBox "Windows 驗證登入成功: " & srvName
    srv.Disconnect
    Exit Sub
ErrHandler:
    MsgBox "登入失敗: " & Err.Description
    Resume Next
End Sub

3. 變更伺服器驗證模式 (ChangeServerAuthenticationMode)

Sub ChangeServerAuthenticationMode(authMode As Long)
    ' authMode 常數:
    ' SQLDMOSecurity_Integrated (=1) : Windows 驗證模式
    ' SQLDMOSecurity_Mixed (=2)      : 混合模式
    Dim srv As SQLDMO.SQLServer
    Set srv = New SQLDMO.SQLServer
    On Error GoTo ErrHandler
    ' 必須使用 Windows 驗證連入才能變更模式
    srv.LoginSecure = True
    srv.Connect "(local)"
    srv.SecurityMode = authMode
    MsgBox "驗證模式已變更為: " & IIf(authMode = 1, "Windows 驗證", "混合模式")
    srv.Disconnect
    Exit Sub
ErrHandler:
    MsgBox "變更失敗: " & Err.Description & vbCrLf & "請確認目前使用 Windows 驗證且具備 sysadmin 權限。"
    Resume Next
End Sub

呼叫範例

Sub Demo()
    ' 1. SQL Server 驗證登入測試
    Call SQLDMOSQLServerLogin("(local)", "sa", "YourStrongPassword")
    
    ' 2. Windows 驗證登入測試
    Call SQLDMOWindowsLogin("(local)")
    
    ' 3. 切換為混合模式 (需以 Windows 管理員身分執行)
    Call ChangeServerAuthenticationMode(SQLDMOSecurity_Mixed)
    
    ' 4. 切換為 Windows 驗證模式
    Call ChangeServerAuthenticationMode(SQLDMOSecurity_Integrated)
End Sub

關鍵注意事項

  • 權限需求: 變更驗證模式需要 sysadmin 固定伺服器角色權限,且連接時必須使用 LoginSecure = True (Windows 驗證)。
  • 常數定義: SQLDMOSecurity_Integrated = 1, SQLDMOSecurity_Mixed = 2 (於 SQLDMO 型別庫中定義)。
  • 錯誤處理: 生產環境代碼務必完善錯誤處理,記錄詳細錯誤資訊 (Err.Number, Err.Description, Err.Source)。
  • 版本適用: SQL-DMO 適用於 SQL Server 7.0/2000/2005。SQL Server 2005+ 建議改用 SMO (SQL Server Management Objects, .NET 組件)。

結語

掌握 SQL-DMO 核心物件 (SQLServer.LoginSecure, Connect, SecurityMode) 即可程式化完成 SQL Server 驗證管理的常見作業,適用於自動化部署腳本、管理工具開發與安全性稽核程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved