不知道怎样调用SQLSERVER自身的备份窗体,但可以使用SQLDMO实现有SQLSERVER自身的备份一样的功能。

解决方案 »

  1.   

    我觉得你可以变通的来实现。在Sql Server中不管你是怎么备份还是恢复都有对应的系统存储过程使用,你可以传入不同的参数就可以了。所以你自己模拟那样的窗体实际上去调用存储过程来实现啊。
      

  2.   

    C#中使用SQL Server分布式管理对象
    我们曾经在以前的应用中多次需要得到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 
    SQLDMO.SQLServer 
    SQLDMO.Database 
    SQLDMO.NameList

    象数据备份和恢复这样的操作都有许多对象可以使用,但作为例子,我们会尽量简单,使你轻松进入SQLDMO的世界来浏览一下它的方便性。
    列出本地网络中可使用的SQL服务器相对来说比较简单,首先,你需要引用SQLDMO.Application对象,其次,你必须建立一个SQLDMO.Application.ListAvailableSQLServers()方法的返回值的实例SQLDMO.NameList,SQLDMO.NameList是服务器名字的COM集合。
    请记住:在你习惯了调用COM对象之前,调用COM对象总是令人感到可怕的,但习惯了就会好的。下面是一些示例代码,它利用本地可使用的SQL服务器的列表来填充下拉列表框。

    //得到所有本地网络中可使用的SQL服务器列表。
    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>"; 
        
    正如前面所讲的,是不是很简单?请记住:COM集合的第一个项目是1,而不是0。
    连接数据库并得到所有数据库的列表也是相当简单的。下面的代码采用上面下拉列表框所选择的SQL服务器,并连接该服务器(使用文本框输入的用户名和密码),生成该服务器上数据库列表的下拉列表框。

    //得到指定SQL服务器所有数据库的列表
    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); 
    }

    要得到该库中对象的列表也是轻而易举的事,再一次连接到数据库,就可以遍历出对象的集合。

    //得到所有的存储过程,所有的表放到Tables集合,所以的视图放到Views集合
    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; 
        } 
    }


    通过上面的例子,要得到SQL的信息是不是很方便呢
      

  3.   

    http://lucky_elove.www1.dotnetplayground.com/ShowDetail.aspx?id=BCEAADFB-CFF3-4804-B3B3-6C7D6488982B