怎样在数据库后台拷贝文件?(成功300分送上)

huangjianyou 2005-01-12 11:34:42
在数据服务器里有一个文件夹“ABC”和一个文件夹“DEF”,“DEF”是共享的,“ABC”是不共享的。
现在我想做的是:在其它机里访问服务器,将要拷贝的文件(有几个或很多)放在“DEF”里,然后通过SQL数据库的存储过程将“DEF”里的文件拷贝到“ABC”。这步我已成功拷贝了。但将“ABC”拷贝回“DEF”就不行了,我想可能是因为“ABC”是不共享的。不知为什么?或者还有什么方法请给出思路?谢了。
...全文
334 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangjianyou 2005-01-24
  • 打赏
  • 举报
回复
可能真不行的了。结了算了。

:(
Softlee81307 2005-01-15
  • 打赏
  • 举报
回复
Declare @s varchar(200)
set @s='copy c:\abc\*.* d:\def\'

exec master.. xp_cmdshell 'net share b=c:\abc'
exec master.. xp_cmdshell 'net share d=d:\def'
exec master..xp_cmdshell @s
exec master.. xp_cmdshell 'net share c:\abc /delete'
exec master.. xp_cmdshell 'net share d:\def /delete'
Softlee81307 2005-01-15
  • 打赏
  • 举报
回复
Declare @s varchar(200)
set @s='copy c:\abc\*.* d:\def\'

exec master..xp_cmdshell @s
huangjianyou 2005-01-15
  • 打赏
  • 举报
回复
真的不行啊?三百分送不出了?
huangjianyou 2005-01-14
  • 打赏
  • 举报
回复
//这个是针对ntfs分区的,你可以直接选择"完全控制"

"ABC"不共享的,如果共享是可以,但由一个共享的“ABC”复制到另一个共享的“DEF”没意义的。

//找不到 SQLSERVERAGENT ? 怪了,这个是代理服务正常安装sql 2000的话,应该是有的

撞鬼了,真的没有。

//你是怎么拷贝的,都可以不共享啊:
exec master..xp_cmdshell 'copy c:\abc\*.* d:\def\'

我试过,不行的。如果ABC不共享而DEF共享,那么在其它机执行就可以从DEF剪切到ABC,但不能从ABC剪切回DEF。
huangjianyou 2005-01-13
  • 打赏
  • 举报
回复
//2.设置上面创建的用户对共享目录(DEF)的所有权限,并且要求这个用户对于不共享的目录(ABC)要有复制文件的权限

这个不会设,怎样设置呢?


//同样的方法设置 SQLSERVERAGENT

我在服务里找不到SQLSERVERAGENT?


要再次麻烦老大了。
long_205 2005-01-13
  • 打赏
  • 举报
回复
你是怎么拷贝的,都可以不共享啊:
exec master..xp_cmdshell 'copy c:\abc\*.* d:\def\'
zjcxc 元老 2005-01-13
  • 打赏
  • 举报
回复
//2.设置上面创建的用户对共享目录(DEF)的所有权限,并且要求这个用户对于不共享的目录(ABC)要有复制文件的权限

这个是针对ntfs分区的,你可以直接选择"完全控制"


找不到 SQLSERVERAGENT ? 怪了,这个是代理服务正常安装sql 2000的话,应该是有的
hglhyy 2005-01-12
  • 打赏
  • 举报
回复

你把权限重新设定一次,再试试看!(可根据你登陆SQL的用户来考虑)
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
//可能是连接数据库的用户没有该文件夹操作的权限,自己检查吧

该文件夹不共享就没该文件夹的权限了。怎样查呢?
pbsql 2005-01-12
  • 打赏
  • 举报
回复
可能是连接数据库的用户没有该文件夹操作的权限,自己检查吧
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
哦,传参数行了,我找出原因了。程序在服务器行的,但放到其它机运行就不行。是不是“ABC”没共享的原因?共享是行的,我试过了,但不共享就不行了。如果共享就没意义了,用户一样可以直接动文件,那拷贝来拷贝去就没意义了。
pbsql 2005-01-12
  • 打赏
  • 举报
回复
既然直接在查询分析器里执行可以那就没问题了

传参数就不可以了,帖出你的代码来吧
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
直接在查询分析器里执行可以,但传参数就不可以了,找不到原因。

上传是指:局域网内的其它机器传到服务器的“ABC”
下载是指:从“ABC”拷贝回“DEF”。

现在我就是想共享“DEF”由用户放临时的文件,再上传到“ABC”,这步我已做成功了。但不想共享“ABC”,因为不想用户乱动“ABC”里的文件。从“ABC”拷贝回“DEF”就出错了,在服务器台机是可以的,但在其它机就不行了。
pbsql 2005-01-12
  • 打赏
  • 举报
回复
你不是说两文件夹都在数据服务器里吗?怎么又成上传、下载了?

若在不同的机器里,当然得共享才行
pbsql 2005-01-12
  • 打赏
  • 举报
回复
直接在查询分析器执行:
exec master..xp_cmdshell 'copy c:\abc\*.* d:\def\'

若不可以再根据提示找原因
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
//同一台机器上应该可以啊,除非帐号权限有限制

现在是不可能在同一机器上啊,同一机器上我都做出来了。但一拷贝程序到别的机上传可以,但下载就不可以了。

//你是怎么拷贝的,都可以不共享啊:
exec master..xp_cmdshell 'copy c:\abc\*.* d:\def\'

xp_cmdshell我试过,但没试成功,麻烦那位帮写一个储存过程出来吧。


补充一点,不可以在服务器上运行程序,一定要在其它机里调用服务器里的存储过程。
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
老大,其它机是看不到“ABC”文件夹的。
huangjianyou 2005-01-12
  • 打赏
  • 举报
回复
//你的sql服务的启动用户是什么? 具有复制abc文件夹下文件的权限么?

是sa吧。
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
你的sql服务的启动用户是什么? 具有复制abc文件夹下文件的权限么?
加载更多回复(12)

34,577

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧