Как восстановить локальную базу данных в ASP.Сетевое веб-приложение, использующее entity Framework?

#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" />