问题:如果用户直接执行bat文件,数据备份和文件复制都正常,但是如果运行windows定时任务来执行该bat文件,则只能备份,不能将文件复制到共享目录,不知是什么问题,麻烦知道的朋友帮帮忙,谢谢!
@echo off
set path=%path%;C:\Program Files\Microsoft SQL Server\100\Tools\Binn
set dt=%date:~0,4%%date:~5,2%%date:~8,2%
set dates=%date% %time%
rem 设置各种路径
rem 备份文件源地址
set pathfrom=F:\BACK\DATABASE_BACK\AutoBack
rem 文件备份地址
set pathto=Z:\DataBaseBack
rem 日志文件路径
set pathlogs=F:\BACK\logs\logs%dt%.txt
echo %dates% >> %pathlogs%
echo 差异备份开始(每天) >> %pathlogs%
SQLCMD.exe -S 127.0.0.1 -U sa -P 123qwe -i F:\TaskPlan\databaseNewDiffBack.sql
echo 差异备份文件生成成功 >> %pathlogs%
xcopy %pathfrom%\databaseNew_diff_%dt%*.bak %pathto% /s /h /d /c /y
echo 差异备份文件复制成功 >> %pathlogs%
rem pause
9 个解决方案
#1
修改Windows定时任务对应服务的登录为你当前的用户登录。
#2
我试过好几个用户,管理员用户都用过。还是不行
#3
试试使用net use命令在批处理中映射网络驱动器。
C:\>net help use
此命令的语法是:
NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
[/USER:[domainname\]username]
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]
[/SMARTCARD]
[/SAVECRED]
[[/DELETE] | [/PERSISTENT:{YES | NO}]]
NET USE {devicename | *} [password | *] /HOME
NET USE [/PERSISTENT:{YES | NO}]
NET USE 用于将计算机与共享的资源相连接,或者切断计算机与共享资
源的连接。当不带选项使用本命令时,它会列出计算机的连接。
devicename 指定一个名字以便与资源相连接,或者指定要切断的设备。
有两种类型的设备名:磁盘驱动器 (D: 至 Z:) 和打印机
(LPT1: 至 LPT3:)。输入 一个星号来代替一个指定的设备
名可以分配下一个可用设备名。
\\computername 指控制共享资源的计算机的名字。如果计算机名中包含有
空字符,就要将双反斜线 (\\) 和计算机名一起用引号
(" ")括起来。计算机名可以有1 到 15 个 字符。
\sharename 指共享资源的网络名字。
\volume 指定一个服务器上的 NetWare 卷。用户必须安装 Netware
的客户服务(Windows 工作站) 或者 Netware 的网关服务
(Windows 服务器) 并使之与 NetWare 服务器相连。
password 指访问共享资源所需要的密码。
* 进行密码提示。当在密码提示符下输入密码时,密码不会显示。
/USER 指定连接时的一个不同的用户名。
domainname 指定另外一个域。如果缺省域,就会使用当前登录的域。
username 指定登录的用户名。
/SMARTCARD 指定连接使用在智能卡上的凭据。
/SAVECRED 指定保留用户名和密码。此开关被忽略,除非命令提示输入用
户名和密码。
/HOME 将用户与他们的主目录相连。
/DELETE 取消一个网络连接,并且从永久连接列表中删除该连接。
/PERSISTENT 控制对永久网络连接的使用。其默认值是最近使用的设置。
YES 在连接产生时保存它们,并在下次登录时恢复它们。
NO 不保存正在产生的连接或后续的连接;现有的连接将在下次登
录时恢复。可以使用 /DELETE 选项开关来删除永久连接。
NET HELP command | MORE 用于逐屏显示帮助。
#4
还可以试试
C:\>runas /?
RUNAS 用法:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<UserName>] program
/noprofile 指定不应该加载用户的配置文件。
这会加速应用程序加载,但
可能会造成一些应用程序运行不正常。
/profile 指定应该加载用户的配置文件。
这是默认值。
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用。
/savecred 用用户以前保存的凭据。
Windows XP Home Edition 上没有这个选项。
该选项会被忽略。
/smartcard 如果凭据是智能卡提供的,则使用这个选项。
/user <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
program EXE 的命令行。请参阅下面的例子
例如:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
注意: 只在得到提示时才输入用户的密码。
注意: USER@DOMAIN 跟 /netonly 不兼容。
注意: /profile 跟 /netonly 不兼容。
注意: /savecred 跟 /smartcard 不兼容。
#5
set path=%path%;C:\Program Files\Microsoft SQL Server\100\Tools\Binn
可能需要改为
set path=%path%; "C:\Program Files\Microsoft SQL Server\100\Tools\Binn "
可能需要改为
set path=%path%; "C:\Program Files\Microsoft SQL Server\100\Tools\Binn "
#6
基本可以判定为权限问题, 可以给定时任务指定权限高的用户, 或者在目录上给那个用户加权限.
#7
给任务设置最高权限吧
#8
怎么解决的?
#9
楼主解决了嘛
#1
修改Windows定时任务对应服务的登录为你当前的用户登录。
#2
我试过好几个用户,管理员用户都用过。还是不行
#3
试试使用net use命令在批处理中映射网络驱动器。
C:\>net help use
此命令的语法是:
NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
[/USER:[domainname\]username]
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]
[/SMARTCARD]
[/SAVECRED]
[[/DELETE] | [/PERSISTENT:{YES | NO}]]
NET USE {devicename | *} [password | *] /HOME
NET USE [/PERSISTENT:{YES | NO}]
NET USE 用于将计算机与共享的资源相连接,或者切断计算机与共享资
源的连接。当不带选项使用本命令时,它会列出计算机的连接。
devicename 指定一个名字以便与资源相连接,或者指定要切断的设备。
有两种类型的设备名:磁盘驱动器 (D: 至 Z:) 和打印机
(LPT1: 至 LPT3:)。输入 一个星号来代替一个指定的设备
名可以分配下一个可用设备名。
\\computername 指控制共享资源的计算机的名字。如果计算机名中包含有
空字符,就要将双反斜线 (\\) 和计算机名一起用引号
(" ")括起来。计算机名可以有1 到 15 个 字符。
\sharename 指共享资源的网络名字。
\volume 指定一个服务器上的 NetWare 卷。用户必须安装 Netware
的客户服务(Windows 工作站) 或者 Netware 的网关服务
(Windows 服务器) 并使之与 NetWare 服务器相连。
password 指访问共享资源所需要的密码。
* 进行密码提示。当在密码提示符下输入密码时,密码不会显示。
/USER 指定连接时的一个不同的用户名。
domainname 指定另外一个域。如果缺省域,就会使用当前登录的域。
username 指定登录的用户名。
/SMARTCARD 指定连接使用在智能卡上的凭据。
/SAVECRED 指定保留用户名和密码。此开关被忽略,除非命令提示输入用
户名和密码。
/HOME 将用户与他们的主目录相连。
/DELETE 取消一个网络连接,并且从永久连接列表中删除该连接。
/PERSISTENT 控制对永久网络连接的使用。其默认值是最近使用的设置。
YES 在连接产生时保存它们,并在下次登录时恢复它们。
NO 不保存正在产生的连接或后续的连接;现有的连接将在下次登
录时恢复。可以使用 /DELETE 选项开关来删除永久连接。
NET HELP command | MORE 用于逐屏显示帮助。
#4
还可以试试
C:\>runas /?
RUNAS 用法:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<UserName>] program
/noprofile 指定不应该加载用户的配置文件。
这会加速应用程序加载,但
可能会造成一些应用程序运行不正常。
/profile 指定应该加载用户的配置文件。
这是默认值。
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用。
/savecred 用用户以前保存的凭据。
Windows XP Home Edition 上没有这个选项。
该选项会被忽略。
/smartcard 如果凭据是智能卡提供的,则使用这个选项。
/user <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
program EXE 的命令行。请参阅下面的例子
例如:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
注意: 只在得到提示时才输入用户的密码。
注意: USER@DOMAIN 跟 /netonly 不兼容。
注意: /profile 跟 /netonly 不兼容。
注意: /savecred 跟 /smartcard 不兼容。
#5
set path=%path%;C:\Program Files\Microsoft SQL Server\100\Tools\Binn
可能需要改为
set path=%path%; "C:\Program Files\Microsoft SQL Server\100\Tools\Binn "
可能需要改为
set path=%path%; "C:\Program Files\Microsoft SQL Server\100\Tools\Binn "
#6
基本可以判定为权限问题, 可以给定时任务指定权限高的用户, 或者在目录上给那个用户加权限.
#7
给任务设置最高权限吧
#8
怎么解决的?
#9
楼主解决了嘛