samerselo Ответов: 2

Резервное копирование и восстановление базы данных SQL server 2012 со страницы aspx


Я использую базу данных sql server 2012 для хранения данных для своего приложения
Я хочу сделать резервную копию и восстановить базу данных из своего приложения
Я реализовал sqlcommand для выполнения операции резервного копирования
Using Cmd As New SqlCommand() With {.Connection = New SqlConnection(ConfigurationManager.ConnectionStrings("JoyBoxArchiveCn").ConnectionString)}

            Dim a = New SqlConnection
            Dim Fnm As String = Server.MapPath("~\backup\test001.bak")
           ' Backup Code
            Cmd.CommandText = "backup database jbxarchive to disk='" & Fnm & "'"
           Cmd.Connection.Open()
           r = Cmd.ExecuteNonQuery
           Cmd.Connection.Close()

и это делает его хорошо
проблема в том, что я пытался восстановить
Cmd.CommandText = "alter database jbxarchive set single_user with rollback immediate; "
           Cmd.CommandText &= "restore database jbxarchive from disk='" & Fnm & "' with replace;"
           Cmd.CommandText &= "alter database jbxarchive set multi_user;"

из management studio он работает нормально, но из кода позади у меня есть ошибка безопасности, что текущий пользователь не имеет разрешения на восстановление базы данных

пожалуйста, проинструктируйте меня, как правильно создавать резервные копии и восстанавливать базу данных из кода позади

Что я уже пробовал:

из management studio он работает нормально, но из кода позади у меня есть ошибка безопасности, что текущий пользователь не имеет разрешения на восстановление базы данных

NotPolitcallyCorrect

Сообщение об ошибке кажется совершенно ясным. Что же это такое, чего вы не поняли?

samerselo

Я понимаю сообщение об ошибке

Мне нужно решение

строка подключения использует интегрированную защиту, а не имя пользователя и пароль

NotPolitcallyCorrect

Тогда вы вообще не понимаете сообщение об ошибке. Вы дали разрешение пользователю в вашей базе данных, чтобы позволить им восстановить?

2 Ответов

Рейтинг:
20

OriginalGriff

Вы не можете изменить это: у вашего пользователя нет разрешения на восстановление базы данных - поскольку это разрушительный процесс, это меня не удивляет.
Начните с того, что не используйте интегрированную безопасность: создайте пользователей в SQL и назначьте им соответствующие разрешения на конкретную базу данных, которую вы хотите использовать. Один-специальный-пользователь должен иметь разрешения на резервное копирование и восстановление и не должен использоваться ни для чего другого.
Пользователи SQL должны иметь только" достаточные " разрешения - предоставление им слишком большого количества-это рецепт серьезных проблем, если ваш код пойдет не так, поэтому не меняйте разрешения по умолчанию для пользователя "generic login", чтобы обойти это: это вызовет у вас неисчислимые проблемы позже.


Рейтинг:
11

samerselo

Наконец я это сделал

Я включил режим входа в sql server, затем включил учетную запись sa и указал пароль

Я использовал учетные данные sa для входа в строку подключения и восстановления выполненного идеально