SQLServer
└─ Databases (Database)
└─ Tables (Table)
├─ Columns (Column)
├─ Indexes (Index)
├─ Keys (Key)
└─ Triggers (Trigger)
Dim oSQLServer As SQLDMO.SQLServer
Set oSQLServer = New SQLDMO.SQLServer
oSQLServer.LoginSecure = True ' 或設定 Login/Password
oSQLServer.Connect ServerName
Dim oDB As SQLDMO.Database
For Each oDB In oSQLServer.Databases
If Not oDB.SystemObject Then
cboDatabases.AddItem oDB.Name
End If
Next
Dim oTable As SQLDMO.Table
For Each oTable In oCurrentDB.Tables
If Not oTable.SystemObject Then
cboTables.AddItem oTable.Name
End If
Next
Dim oCol As SQLDMO.Column
For Each oCol In oCurrentTable.Columns
lstColumns.AddItem oCol.Name & " " & oCol.TypeName & "(" & oCol.Length & ")"
' 其他屬性: oCol.Nullable, oCol.Identity, oCol.DefaultValue, ...
Next
| 物件 | 關鍵屬性 |
|---|---|
| Database | Name, Owner, CreateDate, Size, DBOption |
| Table | Name, Owner, CreateDate, Rows, HasClusteredIndex, SystemObject |
| Column | Name, TypeName, Length, Precision, Scale, Nullable, Identity, IdentitySeed, IdentityIncrement, DefaultValue |
| Index | Name, IndexType (Clustered/NonClustered), FillFactor, IsUnique, IsPrimaryKey |
Microsoft.SqlServer.Management.Smo 命名空間,.NET 原生、功能更豐富。sys.databases, sys.tables, sys.columns, sys.indexes 等,跨語言、無 COM 相依。SQL-DMO 是經典 VB6/ASP 時代存取 SQL Server 中繼資料的標準方式,理解其物件層次有助於理解現代目錄檢視結構。