SQL server-databasewiederherstellung mit ReadXML

Ich habe Backup von einem sqlserver mit diesem Verfahren erstellt:

protected void WriteXML(string tableName) { using (SqlConnection cnn = new SqlConnection(ConnectionString)) { using (SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM [" + tableName + "];", cnn)) { cnn.Open(); DataSet ds = new DataSet(); da.Fill(ds, tableName); ds.WriteXml(server.MapPath("App_Data\\" + tableName + ".xml"); ds.WriteXmlSchema(server.MapPath("App_Data\\" + tableName + ".xslt"); cnn.Close(); } } } 

Jetzt möchte ich diese database wiederherstellen. Gibt es einen einfachen path, dies zu tun?

   

Grundsätzlich nein

  • Du wirst Fremdschlüssel und Auslöser haben, um darüber nachzudenken (Reihenfolge der Tische)
  • data werden während der Sicherung geändert (fehlende Eltern oder Kinder)
  • Sie haben keine Systemtabellen und Metadaten gesichert
  • du wirst die security nicht gesichert haben

Verwenden Sie SQL server native Backup und Wiederherstellung wie alle anderen. Tut mir leid, wenn das brutal ist, aber ich habe niemals jemanden gekannt, der versucht, eine solche database zu sichern.

Nach Bemerkungen:

Warum fragst du deinen Gastgeber nicht zu FTP (etc) ein Backup für dich?

Auch wenn Sie jede Tabelle in der database über eine Website sichern können und es wird zugänglich, dann bedeutet es, dass Sie schlechte security haben …

Okay, hier ist die Lösung basiert auf eggheadcafe.com Post

 protected void ReadXML(string tableName) { DataSet ds = new DataSet(); ds.ReadXml(server.MapPath("App_Data\\" + tableName + ".xml"); using (SqlBulkCopy sbc = new SqlBulkCopy(ConnectionString)) { sbc.DestinationTableName = tableName; sbc.WriteToserver(ds.Tables[tableName]); sbc.Close(); } } 

Auch müssen wir IDENTITY_INSERT [tableName] ein- / ausschalten, wenn die Tabelle eine Identitätsspalte hat.