參考 http://dotnet.aspx.cc/ShowDetail.aspx?id=BCEAADFB-CFF3-4804-B3B3-6C7D6488982B#
我們曾經在以前的應用中多次需要得到SQL Server的詳細資料,過去,我們必須使用API和效率低下的ADO的 調用才能得到,現在,我們有了一個新的方法,就是SQLDMO(SQL Distributed Management Objects,SQL分布式管 理對象),儘管它目前還不被人所知和使用,但是SQLDMO提供了許多強有力的、和利用代碼從SQL Server獲得 資訊相類似的許多功能,為舉例方便,這裡僅向您解釋如何得到本網的SQL Server列表,如何去串連每 個SQL Server,以及如何得到Server中的表、預存程序和視圖的列表。
SQLDMO對象來自SQLDMO.dll,SQLDMO.dll是隨SQL Server2000一起發布的。SQLDMO.dll自身是一個COM對象,因此 ,在你的.NET項目裡必須先引用它,VS.NET整合式開發環境會建立所有必要的對COM的封裝。注意:如果你使用“ using SQLDMO;”語句來引用的話,你將會得到一個錯誤資訊。要讓它在你的應用程式裡正常工作,你必須按 去引用它:
引用了COM對象之後,你就可以很容易地使用它了。
本例子中的所有操作都使用以下的一個或幾個對象:
SQLDMO.Application<br />SQLDMO.SQLServer<br />SQLDMO.Database<br />SQLDMO.NameList<br />
象資料備份和恢複這樣的操作都有許多個物件可以使用,但作為例子,我們會盡量簡單,使你輕鬆進 入SQLDMO的世界來瀏覽一下它的方便性。
列出本網中可使用的SQL伺服器相對來說比較簡單,首先,你需要引用SQLDMO.Application對象,其 次,你必須建立一個SQLDMO.Application.ListAvailableSQLServers()方法的傳回值的實 例SQLDMO.NameList,SQLDMO.NameList是伺服器名字的COM集合。
請記住:在你習慣了調用COM對象之前,調用COM對象總是令人感到可怕的,但習慣了就會好的。下面 是一些範例程式碼,它利用本地可使用的SQL伺服器的列表來填充下拉式清單方塊。
'得到所有本網中可使用的SQL伺服器列表。
Me.CBoxSer.Items.Clear()
Dim sqlApp As New SQLDMO.ApplicationClass
Dim sqlServers As SQLDMO.NameList = sqlApp.ListAvailableSQLServers
Dim i As Int16 = 0
Dim obj As Object
For i = 0 To sqlServers.Count - 1
obj = sqlServers.Item(i)
If Not obj Is Nothing Then
Me.CBoxSer.Items.Add(obj)
End If
Next
正如前面所講的,是不是很簡單?請記住:COM集合的第一個項目是1,而不是0。
串連資料庫並得到所有資料庫的列表也是相當簡單的。下面的代碼採用上面下拉式清單方塊所選擇的SQL服 務器,並串連該伺服器(使用文字框輸入的使用者名稱和密碼),產生該伺服器上資料庫列表的下拉式清單方塊。
'//得到指定SQL伺服器所有資料庫的列表
Dim sqlApp As New SQLDMO.ApplicationClass
Dim sqlSer As New SQLDMO.SQLServerClass
'srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
sqlSer.Connect(Me.CBoxSer.SelectedItem.ToString, Me.TxtName.Text, Me.TxtPwd.Text)
Dim db As SQLDMO.Database
Me.CBoxDaseBase.Items.Clear()
For Each db In sqlSer.Databases
Me.CBoxDaseBase.Items.Add(db.Name)
Next