Hi All,
This may be a dumb question, but I just cannot find an answer. I would like to know how to backup SQL data only so that when I add columns, tables, etc. to my database I can simply backup the data, add the new database and import the old data without problem. I know the old data will not have all the values like, lets say I have the following database:
table = clients
columns = name, number
These have values.
Now I add column = surname.
I want to import name and number to the new table = Clients with columns = name, surname, number. Leaving surname blank ofcourse.
So far, every time I backup my database, the entire database is backed up, so when restoring it copies over my new database causing me to lose my new tables and columns.
Please can someone explain to me how this works?
This is how I backup and restore my database:
public void BackupEntireSqlDatabaseToDisk(string fileName)
{
using (SqlConnection Conn = new SqlConnection(Connect.sConnStr))
{
Conn.Open();
string database = Conn.Database.ToString();
string sSql = string.Format("BACKUP DATABASE [" + database + "] TO DISK='{0}' WITH FORMAT", fileName);
using (SqlCommand cmd = new SqlCommand(sSql, Conn))
{
cmd.ExecuteNonQuery();
}
Conn.Close();
Conn.Dispose();
}
}
public void RestoreEntireSqlDatabaseToEzyGym(string fileName)
{
using (SqlConnection Conn = new SqlConnection(Connect.sConnStr))
{
Conn.Open();
string database = Conn.Database.ToString();
string UseMaster = "USE master";
SqlCommand UseMasterCommand = new SqlCommand(UseMaster, Conn);
UseMasterCommand.ExecuteNonQuery();
string Alter1 = @"ALTER DATABASE [" + database + "] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, Conn);
Alter1Cmd.ExecuteNonQuery();
string Restore = string.Format("Restore database [" + database + "] from disk='{0}'", fileName);
SqlCommand RestoreCmd = new SqlCommand(Restore, Conn);
RestoreCmd.ExecuteNonQuery();
string Alter2 = @"ALTER DATABASE [" + database + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, Conn);
Alter2Cmd.ExecuteNonQuery();
Conn.Close();
Conn.Dispose();
}
}
Regards,
Chris
What I have tried:
I have attached my code for you to see what I tried.