我想用c#获取数据库脚本,请高手指点
我想用c#获取已经存在的数据库的创建脚本,数据表的创建脚本,存储过程的创建脚本,......
请高手指点!
小弟感激不尽!!!!!!!!!!
------解决方案--------------------用SqlDMO  
SQLDMO.SQLServer oServer = new SQLDMO.SQLServer();  
oServer.Connect("127.0.0.1", "sa", "sapassword");  
SQLDMO._Database mydb = oServer.Databases.Item("northwind", "owner");  
SQLDMO._Table myTable = mydb.Tables.Item("Categories", "dbo");  
string s = myTable.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default,null,null, SQLDMO.SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_Default);  
oServer.DisConnect();  
Source.Text = s
------解决方案--------------------楼上的应该是正解
要注意必须使用管理员身份登录,才能获取存储过程
------解决方案--------------------把owner改成dbo
------解决方案--------------------SQLDMO是分布式管理对象的意思
他的文件路径在C:\Program Files\Microsoft SQL Server\80\Tools\Binn
引用它的话就是右键项目---添加引用--浏览---C:\Program Files\Microsoft SQL Server\80\Tools\Binn---打开---确定
然后再using SQLDMO;这样就OK了
------解决方案--------------------127.0.0.1
改为服务器名看看
------解决方案--------------------直接写成个方法好了!下面是可以直接导出多个表的建表脚本!仅供参考!
private string gettablescript(string server, string user, string pwd, string table, string database)
       {
           SQLDMO.SQLServer oServer = new SQLDMO.SQLServer();
           oServer.Connect(""+server+"", ""+user+"", ""+pwd+"");
           SQLDMO._Database mydb = oServer.Databases.Item(""+database+"", "owner");
           SQLDMO._Table myTable = mydb.Tables.Item(""+table+"", "dbo");
           string s = myTable.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default, null, null, SQLDMO.SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_Default);
           oServer.DisConnect();  
           return s;
       }
       /// <summary>
       /// 导出建表脚本
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
       private void button4_Click(object sender, EventArgs e)
       {
           this.saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
           this.saveFileDialog1.ShowDialog();
           if (this.saveFileDialog1.FileName.ToString() == "")
           {
               MessageBox.Show("未选择导出文件路径");
           }
           else
           {
               try
               {
                   using (StreamWriter sw = new StreamWriter(this.saveFileDialog1.FileName.ToString()))
                   {  
                       for (int j = 0; j < checkedListBox1.CheckedItems.Count; j++)
                       {
                           string ss = gettablescript(this.comboBox1.SelectedItem.ToString(), this.textBox2.Text, this.textBox1.Text, this.checkedListBox1.CheckedItems[j].ToString(), this.comboBox2.SelectedItem.ToString());
                           sw.WriteLine(ss);
                           MessageBox.Show("导出表脚本成功");
                       }
                   }                 
               }
               catch (Exception s)
               {
                   MessageBox.Show(s.Message);
               }
           }         
       }
------解决方案--------------------