#sql-server #entity-framework #restore #mdf #local-database
#sql-сервер #entity-framework #восстановить #mdf #локальная база данных
Вопрос:
Я хочу добавить в свое веб-приложение опцию для восстановления базы данных. это StoredProcedure
:
ALTER PROCEDURE [Restore] @path NVARCHAR(MAX)
AS
BEGIN
EXEC('ALTER DATABASE Kimiakesht SET OFFLINE')
EXEC('ALTER DATABASE Kimiakesht SET SINGLE_USER WITH ROLLBACK IMMEDIATE')
RESTORE DATABASE Kimiakesht
FROM DISK = @path
WITH REPLACE
EXEC('ALTER DATABASE Kimiakesht SET MULTI_USER')
EXEC('ALTER DATABASE Kimiakesht SET ONLINE')
END
И я вызываю эту процедуру в приложении, как вы видели ниже:
string backupPath = "F:restorefile.bak";
entity.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, "EXEC [Restore] @path = N'" backupPath "'");
Но я всегда получаю эту ошибку:
Комментарии:
1. Что неясного в том, что «у пользователя нет разрешения»?
2. Это понятно, но как я могу это решить?
3. Ну, кто входит в базу данных? У этого пользователя должны быть соответствующие разрешения.
4. Я использую entity Framework с этой строкой подключения:
<add name="Kimiakesht" connectionString="metadata=res://*/KimiakeshtModel.csdl|res://*/KimiakeshtModel.ssdl|res://*/KimiakeshtModel.msl;provider=System.Data.SqlClient;provider connection string=amp;quot;data source=(LocalDB)v11.0;attachdbfilename=|DataDirectory|Kimiakesht.mdf;integrated security=True;multipleactiveresultsets=True;application name=EntityFrameworkamp;quot;" providerName="System.Data.EntityClient" />