Восстановить базу данных 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 ();»):
- Восстановление базы данных из файла .bak на другой машине
- Оценить размер восстановленной базы данных
- Не удается восстановить Azure SQL V12 bacpac на локальном сервере SQL 2014
- Как восстановить базу данных SQL Server с помощью C #, даже если она используется
- как использовать синтаксис TSQL для восстановления .bak для нового db?
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»?
- Как восстановить SQL localDB программно
- Используйте все резервные копии для восстановления базы данных с помощью SMO
- Использование SMO Restore Class при наличии нескольких точек резервного копирования в файле .bak
- Ошибки, восстанавливающие базу данных Sql Server 2008 с репликацией слиянием
- C # - восстановление базы данных SQL Server с помощью Inline SQL
- Лучший скрипт для восстановления нескольких баз данных с помощью SQL Server 2012?
Я нашел проблему, вы не можете использовать скобки или кавычки вокруг параметров.
Это работает:
SqlCommand sqlCommand = new SqlCommand("RESTORE DATABASE @localDatabaseName " + "FROM DISK = @emptyDatabasePath " + "WITH NOUNLOAD, REPLACE", sqlConnection)