ЦКЛ БД Резервная копия C # - PullRequest
0 голосов
/ 17 июня 2011

Я использую следующий запрос для создания резервной копии с именем файла резервной копии в качестве текущей метки времени и путем, выбранным пользователем (сохраненным в labelbackupPath).

    UtilityClass.ExecuteQuery(@"Declare @file_name varchar(500);
                                set @file_name = CURRENT_TIMESTAMP;
                                BACKUP DATABASE VegiManager to DISK CONCAT(@pathname,@file_name);", true, new SqlParameter("@pathname", labelbackupPath.Text + @"\"));

Вот подпись ExecuteQuery:

  public static int ExecuteQuery(String query, bool showMsgBox, params SqlParameter[] parameters)

Он просто выполняет указанный запрос, добавляя указанные параметры в SqlCommand. Если showMsgBox имеет значение true, он запрашивает подтверждение и выдает результат выполнения запроса.

В части TSql есть какая-то ошибка, пожалуйста, подскажите, где я не прав.

1 Ответ

2 голосов
/ 17 июня 2011

CONCAT не является допустимым оператором TSQL.

Вы просто добавили бы строки с @pathname + @ file_name

Я бы лично поместил эту информацию резервной копии в хранимый процесс и просто выполнил бы этос параметрами, переданными внутрь.

Также лучше всего, если в коде используется SQL SMO, например, http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/95750bdf-fcb1-45bf-9247-d7c0e1b9c8d2/

Примечание. Для выполнения пользователем также потребуются разрешения на резервное копирование, и путь должен быть доступен.на сервер, т. е. если вы создаете резервную копию на C: \ temp, это на сервере, а не на машине, на которой выполняется резервное копирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...