Восстановить базу данных MS SQL с помощью пути, отличного от «c: \ Program Files \ Microsoft SQL \ … \ Backup»

Я хочу уменьшить усилия по созданию базы данных на локальном компьютере путем восстановления пустого вместо его создания через SQL.

Это мой код до сих пор (DataAccess.ApplicationDirectory «C: \ ProgramData \ RC Vehicle Management \»):

public static void CreateLocalDatabase () { const String 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.LocalDatabaseConnectionString.InitialCatalog; sqlCommand.Parameters.Add("@emptyDatabasePath", System.Data.SqlDbType.VarChar).Value = Path.Combine(DataAccess.ApplicationDirectory, emptyDatabaseFileName); sqlCommand.ExecuteNonQuery(); } } } 

Но при выполнении я получаю следующее исключение (в «sqlCommand.ExecuteNonQuery ();»):

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

Я понятия не имею, почему он хочет получить резервную копию из «c: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ Backup», объявление пути I будет «C: \ ProgramData \ RC Vehicle Management \ EmptyDatabase. безнал»

Что я делаю неправильно? Или это просто невозможно восстановить с пути, отличного от «c: \ Program Files \ Microsoft SQL … \ Backup»?

Я нашел проблему, вы не можете использовать скобки или кавычки вокруг параметров.

Это работает:

 SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE @localDatabaseName " + "FROM DISK = @emptyDatabasePath " + "WITH NOUNLOAD, REPLACE", sqlConnection) 
Давайте будем гением компьютера.