BACKUP DATABASE 的时候提示备份失败
客户端运行程序,点一个按钮,备份数据库,点按钮执行:
BACKUP DATABASE abc TO DISK = '\\192.168.0.2\d$\数据库备份\123456.bak' WITH INIT
1、连接数据库用的是 Provider=SQLOLEDB.1;Data Source=192.168.0.2;
User ID=sa;Password=;Initial Catalog=abc;Persist Security Info=True
2、第一次运行报错,提示备份失败
3、如果我在运行里面, \\192.168.0.2\d$ ,输入用户名、密码,备份是成功的
报什么错误? 可以把 sqlserver 启动账号 改为系统管理员 administrator ,一般就可以了
解释一下吧 这种问题论坛也很多的,今天吃饱饭没事做了解释一下 ^^
这个和你应用程序连接数据库用的验证方式是无关的
因为你的备份是到网络路径,对方windows(不管是不是一台机器)会向你这台windows要求一个身份验证,虽然你在sql server的登录是sa,确实sqlserver是完全信任你的连接的,但是对方的windows并不信任你的sqlserver,他只认网络凭据也就是你这里的windows身份,所以要让你用指定的系统管理员身份来启动sqlserver,这样对方的windows就知道了,现在和我通信的是windows的某个用户,而不是对方的sqlserver,sqlserver的身份他根本无视的.
这样你明白了吧sqlserver是运行在windows上的一个程序而已,不能代替windows的身份.sqlserver管理员不等同于windows管理员
再举个例子 你公司的老板代表公司去问银行贷款,他光带身份证没用,还要带组织机构代码,公章等.说明是公司的身份派他来的,因为打交道的是公司不是个人.
三个办法:
1.按照billpu所说的,为sql server service启动帐号设置权限
2.用xp_cmdshell 执行net use path password user
3.不用D$,而是设置一个任何人可以读写的文件夹共享。