я предполагаю, что вы запускаете свою программу как запланированное задание ... дали ли вы права на запись в целевую папку для исполняющего пользователя задания ??
редактирование:
с разрешениями вы можете иметь 2 сценария:
- Windows аутентификация
- смешанная аутентификация
если вы используете проверку подлинности Windows, права на чтение и запись для пользователя Windows принимаются. в противном случае разрешения для учетной записи службы сервера sql.
и это поведение имеет смысл для меня и, возможно, поражает вас в вашем сценарии!
изменить 2:
я не хочу призывать вас делать это ... некоторые администраторы могут ненавидеть вас, если вы испортите их списки
но это может добиться цели
кстати: Магнус Йоханссон уже дал вам ссылку "попробуй это"
независимо от того, какой метод вы выберете - обязательно укажите правильного пользователя (как описано выше!)
(для полной истории)
...
бок примечание:
я знаю, что это не точный ответ на ваш вопрос, но я бы порекомендовал вам создать резервные копии ...
как
using Microsoft.SqlServer.Management.Smo;
var bdi = new BackupDeviceItem(/* your path inlcuding desired file */);
var backup = new Backup
{
Database = /* name of the database */,
Initialize = true
};
backup.Devices.Add(bdi);
var server = new Server(this.SqlServer);
try
{
backup.SqlBackup(server);
}
catch (Exception ex)
{
// * log or sth
}
Вы должны заботиться только о DLL. принимать сборки для нужной версии сервера (некоторые параметры / свойства различаются в зависимости от версии сервера)
больше информации здесь