Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将多个表从SQL Server导出到XML以进行恢复_C#_Asp.net_Sql Server_Xml_Linq - Fatal编程技术网

C# 将多个表从SQL Server导出到XML以进行恢复

C# 将多个表从SQL Server导出到XML以进行恢复,c#,asp.net,sql-server,xml,linq,C#,Asp.net,Sql Server,Xml,Linq,我有一个C#/ASP.NET中的web应用程序。我想用相同的唯一键(公司ID)导出所有数据库表的数据。所有表都有此键(每个公司的键不同)。我想在以后的备份中这样做。使用Linq或经典C#有可能吗?如何实现此备份和恢复?解决方案的一个示例是 using System.Data.SqlClient; using System.Data; using System.IO; namespace ConsoleApplication4 { class Program { static void

我有一个C#/ASP.NET中的web应用程序。我想用相同的唯一键(
公司ID
)导出所有数据库表的数据。所有表都有此键(每个公司的键不同)。我想在以后的备份中这样做。使用Linq或经典C#有可能吗?如何实现此备份和恢复?

解决方案的一个示例是

using System.Data.SqlClient;
using System.Data;
using System.IO;

namespace ConsoleApplication4
{
class Program
{
    static void Main(string[] args)
    {
        var connStr = "Data Source=MOHSINWIN8PRO\\SQLEXPRESS;Initial Catalog=AB2EDEMO;Integrated Security=True";
        var xmlFileData = "";
        DataSet ds = new DataSet();
        var tables = new[] {"Hospital", "Patient"};
        foreach (var table in tables)
        {

            var query = "SELECT * FROM "+ table +" WHERE (Hospital_Code = 'Hosp1')";
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            conn.Close();
            conn.Dispose();
            xmlFileData+=ds.GetXml();
        }
        File.WriteAllText("D://SelectiveDatabaseBackup.xml",xmlFileData);
    }
}
}


这将创建
SelectiveDatabaseBackup.xml
,以后可以使用它来恢复备份

如果您使用的是SQL Server-您应该使用SQL Server数据库备份机制-而不是重新设计整个过程….@marc_s:他想根据使用SQL Server数据库的公司id备份选择性记录备份不是我的好主意,我猜你可以创建一个过程,根据你唯一的ID-公司ID的过滤器从所有表中得到结果,然后使用XML获取XML。有这么简单的方法…运行SQL语句…循环通过它们,并在循环中创建XML/CSV文件。我可能会使用SQL Server导入/导出实用程序…从“查询到CSV”方法导出。你能给我举个例子吗?您认为我应该为每个数据库表创建一个xml还是一个xml?我在问什么对恢复功能更有帮助。谢谢你的帮助!您能告诉我var table是什么数据类型吗?因为我的框架表是字符串,而表是字符串数组。当我尝试分配字符串表时,(在foreach声明中)我发现错误:找不到类型或名称空间名称表
string[]tables=new string[]{“Hospital”,“Patient”}
foreach(表中的字符串表)
唯一的问题是所有元素的名称都是table。有没有办法把每个表的名称都记下来?只写代码的答案真的需要解释一下。请你详细说明一下好吗?
               SaveFileDialog SD = new SaveFileDialog();
                if (SD.ShowDialog() != System.Windows.Forms.DialogResult.Cancel)
                {
                    System.IO.StreamWriter SW = new System.IO.StreamWriter(SD.FileName);
                    foreach (string str in checkedListBox1.CheckedItems)
                    {
                        string XMLSTR = //Heads.funtions.ConvertDatatableToXML(
                                        Heads.funtions.fire_qry_for_string(string.Format("Select * from {0} FOR XML AUTO,TYPE, ELEMENTS ,ROOT('{0}')", str)); // , str);
                        SW.Write(XMLSTR);
                        SW.WriteLine("###TABLEEND###");
                    }
                    SW.Close();
                    //_CommonClasses._Cls_Alerts.ShowAlert("Clean Up Completed...!!!", "CleanUP", MessageBoxIcon.Information);
                }