我想用这个C#代码进行数据库备份:
connect = new SqlConnection(con);
connect.Open();
// Execute SQL
SqlCommand command = new SqlCommand
(
@"backup database MY_database to disk='d:\SQLBackup\wcBackUp1.bak' with init, stats=10",
connect
);
command.ExecuteNonQuery();
connect.Close();
运行时,会显示以下错误消息:
无法打开备份设备'd:\ SQLBackup \ wcBackUp1.bak'。 操作系统错误3(系统找不到指定的路径。)。
如果我将路径更改为d:\wcBackUp1.bak
它似乎没问题,没有错误,但文件不存在,则没有生成。
如果我在SQL中运行命令,我会收到100%处理的消息,但我没有看到该文件。
有人能帮帮我吗?
答案 0 :(得分:5)
确保数据库服务器中存在“d:\ SQLBackup \”位置,而不是客户端计算机上存在。
答案 1 :(得分:3)
要检查两件事。
Sql Service可能无法访问d:\ sqlbackup文件夹。旧的Sql安装用于默认安装具有对机器的完全访问权限的服务,但是较新的实例会将其收紧。您可以尝试更改存储默认备份的目录的路径。
其次,如果sql server不在运行该程序的同一台机器上,那么你必须记住D:将是sql服务器上的D:而不是你的本地机器
答案 2 :(得分:0)
从根本上说,运行SQL Server服务的Windows帐户必须对指定的文件夹具有写入权限。
您可以通过在SQL Server服务下查看SQL Server配置管理器来查看这是什么帐户(查看“登录为”列)
使用资源管理器检查帐户对目标文件夹的实际权限 - >右键单击文件夹 - >属性 - >安全 - >高级 - >有效的权限。
检查这是问题的一种方法是将代码更改为备份到SQL实例的备份文件夹,其中权限可能是正确的。例如
C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup