2012-06-13 3 views
0

У меня возникли трудности с восстановлением нескольких баз данных с помощью моего сценария C#. Он также не дает никаких ошибок - он просто ничего не делает.Восстановление из кода не работает и не дает ошибок

Вот код:

// 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() 
+0

Когда вы его отлаживаете - выполняет ли она команду? И файл журнала очищается на диск или тоже ошибка? –

ответ

1

Вы не выполнить команду в любом месте ... Попробуйте ExecuteNonQuery!

например.

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

Вот и все ... Странно. Я думал, что попробовал это, и он попросил аргумент ... возможно, я нажал на другой тег Intellisense или что-то в этом роде ... – user973259

Смежные вопросы