Restaurez MS SQL Database à partir d'un path autre que "c: \ Program Files \ Microsoft SQL \ … \ Backup"

Je veux réduire l'effort de créer une database sur la machine locale en restaurant un vide au lieu de le créer via SQL.

C'est mon code jusqu'à présent (DataAccess.ApplicationDirectory est "C: \ ProgramData \ RC Vehicle Management \"):

public static void CreateLocalDatabase () { const Ssortingng emptyDatabaseFileName = "EmptyDatabase.bak"; if(Directory.Exists(DataAccess.ApplicationDirectory) == false) { Directory.CreateDirectory(DataAccess.ApplicationDirectory); } File.WriteAllBytes(Path.Combine(DataAccess.ApplicationDirectory + emptyDatabaseFileName), Resources.RcVehicleManagement); using (SqlConnection sqlConnection = DataAccess.LocalMachineConnection()) { sqlConnection.Open(); using (SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE [@localDatabaseName] " + "FROM DISK = '@emptyDatabasePath' " + "WITH NOUNLOAD, REPLACE", sqlConnection)) { sqlCommand.Parameters.Add("@localDatabaseName", System.Data.SqlDbType.VarChar).Value = DataAccess.LocalDatabaseConnectionSsortingng.InitialCatalog; sqlCommand.Parameters.Add("@emptyDatabasePath", System.Data.SqlDbType.VarChar).Value = Path.Combine(DataAccess.ApplicationDirectory, emptyDatabaseFileName); sqlCommand.ExecuteNonQuery(); } } } 

Mais lors de l'exécution, j'obtiens l'exception suivante (à "sqlCommand.ExecuteNonQuery ();"):

 Cannot open backup device 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\@emptyDatabasePath'. Operating system error 2(failed to resortingeve text for this error. Reason: 15105). RESTORE DATABASE is terminating abnormally. 

Je ne sais pas pourquoi il veut get la sauvegarde de "c: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ Backup", le path que je déclare serait "C: \ ProgramData \ RC Vehicle Management \ EmptyDatabase. bak "

Qu'est-ce que je fais de mal? Ou est-il simplement impossible de restaurer à partir d'un path autre que "c: \ Program Files \ Microsoft SQL … \ Backup"?

J'ai trouvé le problème, vous ne pouvez pas utiliser des crochets ou des guillemets autour des parameters.

Cela marche:

 SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE @localDatabaseName " + "FROM DISK = @emptyDatabasePath " + "WITH NOUNLOAD, REPLACE", sqlConnection)