我假设您正在将程序作为计划任务运行...您是否为任务的执行用户授予了目标文件夹的写入权限?
edit:
有了权限,你可以有两种情况:
如果使用windows身份验证,则会获取windows用户的读写权限。否则是 sql server 服务帐户的权限。
这种行为对我来说很有意义,并且可能在您的场景中击中要害!
edit 2:
我不想鼓励你这样做...当你弄乱他们的 ACL 时,一些管理员可能会讨厌你
但this http://weblogs.asp.net/cumpsd/archive/2004/02/08/69403.aspx可能会成功
顺便说一句:马格努斯·约翰逊已经给了 https://stackoverflow.com/questions/728658/creating-sql-server-backup-file-bak-with-c-to-any-location/728696#728696你一个“试试这个”链接
无论您采用哪种方法 - 请务必提交正确的用户(如上所述!)
(完整历史记录)
...
边注:
我知道这不是您问题的确切答案,但我建议您生成备份......
like
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。获取所需服务器版本的程序集(某些参数/属性因不同服务器版本而异)
更多信息here http://msdn.microsoft.com/en-us/library/ms162129.aspx