如何获得本地SQL SEVER 的数据库
如题,获得本地服务器的数据库名称,或者能获得局域网上的所有服务器名称,再获得其下的数据库,大侠伸手帮忙,感激不尽
Select * From Master..sysdatabases就是對應的實例中的所有數據庫了
Private Sub GetSqlServer()
Dim oSQLServerDMOApp As Object
Dim i As Integer
Dim namX As Object
On Error Resume Next
Set oSQLServerDMOApp = CreateObject("SQLDMO.Application")
Set namX = oSQLServerDMOApp.ListAvailableSQLServers
For i = 1 To namX.Count
cmbServer.AddItem namX.Item(i)
Next
cmbServer.ListIndex = 0
End Sub
添加Microsoft SQLDMO Object Library引用
读取所有服务器:
Set sqlApp = New Application
Set sqlNameList = sqlApp.ListAvailableSQLServers()
List.Clear
For intIndex = 1 To sqlNameList.Count - 1
List.AddItem sqlNameList.Item(intIndex)
Next intIndex
sqlApp.Quit
Set sqlApp = Nothing
读取所有数据库:
Set sqlServer = New sqlServer
sqlServer.Connect ServerName, UserName, Password
List.Clear
For intIndex = 1 To sqlServer.Databases.Count
List.AddItem sqlServer.Databases.Item(intIndex).Name
Next intIndex
sqlServer.Close
Set sqlServer = Nothing
Dim strSQL As String
Dim Rst As Adodb.Recordset
Dim strCnn As String
Dim i As Integer
Set Rst = New Adodb.Recordset
strSQL = "select * from sysdatabases"
strCnn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=111117;Initial Catalog=master;Data Source=(local)"
Rst.Open strSQL, strCnn, adOpenDynamic, adLockReadOnly
For i = 1 To Rst.RecordCount
cboDB.AddItem Rst.Fields(0).Value
Next i
为什么我获得的RECORDCOUNT 是-1 ?
为什么我读取服务器总失败?我用ADODC控件也是这样,枚举服务器总失败,我是在本机装的SQL SEVER服务器端和客户端,好像装的是开发版,谁能给解释下,谢啦