dot net操作sql伺服器大全

來源:互聯網
上載者:User
李洪根

SQLDMO(SQL Distributed Management Objects,SQL分散式管理物件)封裝 Microsoft SQL Server 2000 資料庫中的對象。SQL-DMO 允許用支援自動化或 COM 的語言編寫應用程式,以管理 SQL Server 安裝的所有部分。SQL-DMO 是 SQL Server 2000 中的 SQL Server 企業管理器所使用的應用程式介面 (API);因此使用 SQL-DMO 的應用程式可以執行 SQL Server 企業管理器執行的所有功能。</p><p>SQL-DMO 用於必須包含 SQL Server 管理的任何自動化或 COM 應用程式,例如:<br />1.封裝 SQL Server 作為自己的資料存放區並想盡量減少使用者的 SQL Server 管理工作的應用程式。<br />2.在程式本身併入了專門的管理邏輯的應用程式。<br />3.想在自己的使用者介面中整合 SQL Server 管理工作的應用程式。 </p><p>SQLDMO對象來自SQLDMO.dll,SQLDMO.dll是隨SQL Server2000一起發布的。SQLDMO.dll自身是一個COM對象,因此,在你的.NET項目裡必須先引用它。<br />

得到網路中的SQL伺服器的列表:<br />cbDatabase為一下拉式清單方塊<br />

   '得到SQL伺服器的列表        '必須安裝SQL SERVER 2000 SP2 及以上版本        Dim I As Short        Dim sqlApp As New SQLDMO.Application()        Dim ServerName As SQLDMO.NameList        ServerName = sqlApp.ListAvailableSQLServers        For i = 1 To ServerName.Count            cbServer.Items.Add(ServerName.Item(i))        Next

得到指定SQL伺服器所有資料庫的列表:

        '得到指定SQL伺服器所有資料庫的列表        Dim sqlApp As New SQLDMO.Application()        Dim oServer As New SQLDMO.SQLServer()        oServer.Connect("(local)", "sa", "sa")        cbDatabase.Items.Clear()        Dim db As SQLDMO.Database        For Each db In oServer.Databases            Me.cbDatabase.Items.Add(db.Name)        Next

得到所有的表、視圖、預存程序:

        Dim I As Short        Dim oServer As New SQLDMO.SQLServer()        oServer.Connect("(local)", "sa", "sa")        Dim db As New SQLDMO.Database()        For I = 1 To oServer.Databases.Count            If oServer.Databases.Item(I, "dbo").Name = "Northwind" Then Exit For        Next        If I > oServer.Databases.Count Then Exit Sub        db = oServer.Databases.Item(I, "dbo")        ListBox1.Items.Clear()        '得到所有的預存程序        For I = 1 To db.StoredProcedures.Count            ListBox1.Items.Add(db.StoredProcedures.Item(I, "dbo").Name)        Next        '得到所有的表        For I = 1 To db.Tables.Count            ListBox1.Items.Add(db.Tables.Item(I, "dbo").Name)        Next        ' 得到所有的視圖        For I = 1 To db.Views.Count            ListBox1.Items.Add(db.Views.Item(I, "dbo").Name)        Next

利用SQLDMO實現帶進度條的Database Backup:

    '̀添加進度條ProgressBar1控制項       '̉引用Microsoft  SQLDMO  Object  Library       '聲明       Public WithEvents bkps As SQLDMO.Backup    'Database Backup操作     Private Sub btnBackUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackUp.Click        Dim oSQLServer As New SQLDMO.SQLServer()        oSQLServer.LoginSecure = False        oSQLServer.Connect("(local)", "sa", "sa")                '串連伺服器          Me.Cursor = Windows.Forms.Cursors.WaitCursor        bkps = CreateObject("SQLDMO.Backup")        bkps.Database = "Northwind"  '指定需備份的資料庫         bkps.Action = 0        bkps.Files = "f:\Northwind.bak"  '指定備份檔案           bkps.Initialize = True        ProgressBar1.Value = 0        ProgressBar1.Maximum = 100        Me.Cursor = Windows.Forms.Cursors.Default()        Application.DoEvents()        Dim mouseCur As Cursor        Me.Cursor = Windows.Forms.Cursors.WaitCursor        bkps.SQLBackup(oSQLServer)        ProgressBar1.Value = 100        Application.DoEvents()        bkps = Nothing        Me.Cursor = Windows.Forms.Cursors.Default()        MsgBox("Database Backup完成", MsgBoxStyle.Information, "系統訊息")    End Sub    '顯示進度      Private Sub bkps_PercentComplete(ByVal Message As String, ByVal Percent As Integer) Handles bkps.PercentComplete        ProgressBar1.Value = ProgressBar1.Maximum * (Percent / 100)    End Sub

SQLDMO For C#
By Kevin Goss

Download SQLDMO.zip

Many times I have had a need to get at SQL Server details in my applications.  Until recently I had to use API calls and bastardized ADO calls to get the information I needed.  Now we have SQLDMO  (SQL Distributed Management Objects) .  Although not widely known or used, SQLDMO provides a very powerful set of functionality to do just about anything with an SQL Server from code.  For the purposes of this example I will show how to retrieve a list of SQL Servers on your local network, how to connect to one, and how to retrieve a list of tables, stored procedures, or views from a server. 

The SQLDMO object comes from the SQLDMO.dll that ships with SQL Server 2000.  The dll itself is a COM object and you must reference it from your .net project as such.  The IDE will create the necessary COM wrappers needed to use the library.  NOTE: IF YOU USE THE STATEMENT "using SQLDMO;" IN YOUR APP YOU MAY GET AN ERROR.

(YOU MUST RE-REFERENCE THE COM OBJECT FOR THE SAMPLE APP TO WORK)

After referencing the COM object, you can begin using it quite easily. 

All of the operations performed in the example use one or more of the following objects:

  • SQLDMO.Application
  • SQLDMO.SQLServer
  • SQLDMO.Database
  • SQLDMO.NameList

There are a multitude of objects available for actions such as backups and restores, but for the purpose of this article I decided to keep it simple to ease you into the world of SQLDMO.

Listing the available SQL Servers on your network is quite simple.  First you need a references SQLDMO.Application object.  Next you set an instance of SQLDMO.NameList to the return value of the SQLDMO.Application.ListAvailableSQLServers() method.  The SQLDMO.NameList if a COM collection of the server names.  

Keep in mind, calling COM objects is a little funky until you get used to it, but the conventions are similar with all of them.  Here is example code which fills a combo box name cboServers with a list of all available SQL Servers on the local network:

//get all available SQL Servers    
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
for(int i=0;i<sqlServers.Count;i++)
{
    object srv = sqlServers.Item(i + 1);
    if(srv != null)
    {
        this.cboServers.Items.Add(srv);                        
    }
}
if(this.cboServers.Items.Count > 0)
    this.cboServers.SelectedIndex = 0;
else
    this.cboServers.Text = "<No available SQL Servers>";

As you can see, this is quite simple.  Just remember that COM collections start at an index of 1, not 0. 

Connecting to a server and getting a list of databases is also fairly simple.  The following code will take the chosen SQL Server in the combo box, connect to it (with a user name and password in 2 text boxes), and then poulates another combo box with a list of databases on the server.

//get all available databases from an SQL Server
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();                
srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
foreach(SQLDMO.Database db in srv.Databases)
{
    if(db.Name!=null)
        this.cboDatabase.Items.Add(db.Name);
}

Getting a list of objects by type is also a breeze with this library.  Again, you make a connection to the database, and then you loop through the object collection. 

//Get all Stored procedures - tables are in the Tables collection, views are in the Views collection
SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();                
srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
for(int i=0;i<srv.Databases.Count;i++)
{
    if(srv.Databases.Item(i+1,"dbo").Name == this.cboDatabase.SelectedItem.ToString())
    {
        SQLDMO._Database db= srv.Databases.Item(i+1,"dbo");
        this.lstObjects.Items.Clear();
        for(int j=0;j<db.StoredProcedures.Count;j++)
        {
            this.lstObjects.Items.Add(db.StoredProcedures.Item(j+1,"dbo").Name);
        } 
        break;
    }
}

Well folks, that is it for my SQLDMO beginners' tutorial.  Please download the sample code and app to see it in action.  As you can see, this is a much easier alternative when SQL information or control is needed.  Happy coding!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.