VB.NET中使用SQL Server分散式管理物件(SQL-DMO)

來源:互聯網
上載者:User

參考 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
 

 

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.