user973259
user973259

Reputation: 77

Restore from code doesn't work and provides no errors

I'm having a difficult time restoring several databases with my C# script. It's also not providing any errors -- it just does nothing.

Here's the code:

// Connect to SQL Server
SqlConnection conn = new SqlConnection("Data Source=SERVERNAME;" + "Integrated Security=SSPI;" + "Connection timeout=60");

StreamWriter logFile = new StreamWriter(@"F:\Backups\log.txt");

try{
    conn.Open();
}catch(Exception e){
    string errorTxt = "There was an error connecting to the server: " + e.ToString();
    logFile.WriteLine(errorTxt);
}

// Get Directory
DirectoryInfo source = new DirectoryInfo(@"F:\Backups\SERVERNAME\");

foreach(FileInfo fi in source.GetFiles()){

    // We need to get the DB name:
    string filename = fi.Name.ToString();
    int bkpIndex = filename.IndexOf("_backup");

    string sql = "USE master RESTORE DATABASE " + filename.Substring(0, bkpIndex) + " FROM DISK = '" + fi.FullName + "' WITH REPLACE";

    try{
        Console.WriteLine("Restoring {0}.", filename.Substring(0, bkpIndex));
        logFile.WriteLine("SQL: {0}", sql);
        SqlCommand cmd = new SqlCommand(sql, conn);
    }catch(Exception ex){
        logFile.WriteLine("Error restoring {0}: " + ex.ToString(), filename.Substring(0, bkpIndex));
    }

}

logFile.Close()
conn.Close()

Upvotes: 0

Views: 122

Answers (1)

Jeff Watkins
Jeff Watkins

Reputation: 6359

You're not executing the command anywhere... Try ExecuteNonQuery!

e.g.

SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();

Upvotes: 1

Related Questions