2013-04-04 13 views
5

Mam aplikację internetową w C#/ASP.NET. Chcę wyeksportować wszystkie dane tabeli bazy danych z tym samym unikalnym kluczem (Company ID). Wszystkie tabele mają ten klucz (inny dla każdej firmy). Chcę to zrobić dla przyszłej kopii zapasowej. Czy to możliwe z Linq lub klasycznym C#? Jak osiągnąć tę kopię zapasową i przywrócić?Eksportuj wiele tabel z SQL Server do XML do przywracania

+0

Jeśli używasz SQL Server - powinieneś używać mechanizmu ** kopii zapasowej bazy danych SQL Server ** - nie wymyślając ponownie całej sprawy ..... –

+0

@marc_s: chce tworzyć kopie selektywne na podstawie t on id firmy, dla którego tworzenie kopii zapasowej bazy danych SQL SERVER nie jest dobrym pomysłem Myślę, że –

+0

jesteś w stanie stworzyć procedurę, która da ci wynik ze wszystkich tabel bazując na filtrze Twojego Unikalnego ID - Identyfikator firmy, a następnie przez użycie XML DLA TWOJEGO w stanie uzyskać xml. – KuldipMCA

Odpowiedz

2

Jeden przykład do rozwiązania jest

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); 
    } 
} 

}

stworzy SelectiveDatabaseBackup.xml, które mogą być później wykorzystane w celu przywrócenia kopii zapasowej

+0

Dziękuję za pomoc! Czy możesz mi powiedzieć jaki typem danych jest tablica var, ponieważ mam problem z var na mojej strukturze tabeli – Equilibrium

+0

to łańcuch znaków, a tabele to ciąg tablicowy –

+0

Kiedy próbuję przypisać tabelę ciągów znaków, (wewnątrz deklaracji foreach) otrzymuję błąd: Typ lub przestrzeń nazw nie można znaleźć tabeli nazw – Equilibrium

-2
   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); 
       } 
+2

Odpowiedzi tylko na kod naprawdę mogą zrobić z niektórymi wyjaśnienie. Czy mógłbyś to rozwinąć? – Werner

Powiązane problemy