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

SQL Server SQLOLE 自動化管理:ASP 存取伺服器屬性、列舉資料庫/資料表/檢視/預存程序

     編輯:關於SqlServer

SQLOLE 簡介

SQLOLE.SQLServer 是 SQL Server 專用的 COM 自動化介面,允許在 ASP/VBScript 中直接操作伺服器層級物件(資料庫、資料表、檢視、預存程序等),不需透過 ADO 連線查詢系統表。適合建立管理工具、結構代碼產生器、部署腳本等場景。

建立伺服器物件並連線

<%@ LANGUAGE = VBScript %>
<%
Dim oSQLServer
Set oSQLServer = CreateObject("SQLOPE.SQLServer")  ' 注意:正確 ProgID 為 SQLOLE.SQLServer

Dim strServer, strLogin, strPwd
strServer = "."
strLogin = "sa"
strPwd = ""

On Error Resume Next
oSQLServer.Connect strServer, strLogin, strPwd
If Err.Number <> 0 Then
    Response.Write "連線失敗: " & Err.Description
    Response.End
End If
%>

列舉伺服器層級集合

' 所有使用者資料庫
For Each SQLDB In oSQLServer.Databases
    If Not SQLDB.SystemObject Then
        Response.Write SQLDB.Name & "
" End If Next ' 特定資料庫的資料表 Dim pubDatabase Set pubDatabase = oSQLServer.Databases("pubs") For Each DBTable In pubDatabase.Tables Response.Write DBTable.Name & "
" Next ' 檢視 For Each DBView In pubDatabase.Views Response.Write DBView.Name & " - " & Left(DBView.Text, 200) & "
" Next ' 預存程序 For Each DBSP In pubDatabase.StoredProcedures Response.Write DBSP.Name & "
" ' Response.Write DBSP.Text ' 取得完整定義 Next

完整 ASP 範例:資料庫下拉選單

<%@ LANGUAGE = VBScript %>

SQLOLE Demo

<%
Dim oSQLServer, strServer, strLogin, strPwd
Set oSQLServer = CreateObject("SQLOLE.SQLServer")
strServer = "." : strLogin = "sa" : strPwd = ""
oSQLServer.Connect strServer, strLogin, strPwd
%>



進階應用:結構同步/代碼產生

  • 產生 CREATE TABLE 腳本:遍歷 Table.Columns、Table.Indexes、Table.Keys 組合 DDL
  • 比對兩庫差異:連線兩個 SQLOLE.SQLServer 實例,遞迴比對物件清單與屬性
  • 自動部署:讀取 .sql 檔,透過 Database.ExecuteImmediate 執行

權限與安全性注意事項

  1. 連線帳號需 sysadmin 或至少 db_owner 才能列舉所有物件
  2. ASP 執行身份(IUSR/應用程式集區身份)需具備 COM 啟動權限(DCOM 設定)
  3. 避免在前端頁面直接暴露 sa 密碼,建議用 Windows 整合驗證或低權限 Proxy 帳號
  4. SQLOLE 已於 SQL Server 2005 標記棄用,SQL 2012 移除;現代專案請改用 SMO (SQL Server Management Objects) 或 PowerShell + dbatools

SMO 對應範例

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
$srv = New-Object Microsoft.SqlServer.Management.Smo.Server(".")
$dbs = $srv.Databases | Where-Object { -not $_.IsSystemObject }
$dbs | Select-Object Name, Collation, RecoveryModel, CreateDate

IE 伺服器變數快速參考(附錄)

原文附錄列出 IIS Request.ServerVariables 支援的變數,常用者:

  • REMOTE_ADDR、REMOTE_HOST:客戶端 IP/主機名
  • HTTP_USER_AGENT:瀏覽器識別字串
  • HTTP_REFERER:來源頁面
  • SERVER_NAME、SERVER_PORT、SERVER_SOFTWARE:伺服器資訊
  • HTTPS、HTTPS_KEYSIZE、HTTPS_SECRETKEYSIZE:SSL 相關
  • AUTH_USER、AUTH_TYPE、AUTH_PASSWORD:驗證資訊
  • CERT_*:客戶端憑證屬性

完整清單請參考 MSDN ServerVariables 文件。

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