VB 6.0使用ADO连接非本地SQL Server 2000中master数据库。然后执行语句:cn.execute "master.dbo.xp_cmdshell 'osql -U sa -P  -d TSDATA0001 -i E:\TSDATA.SQL'"。想法是:通过程序实现数据库TSDATA0001执行本地机器中E:\TSDATA.SQL里的SQL命令。
但是结果是数据库TSDATA0001中并未出现变化,即E:\TSDATA.SQL里的SQL命令并未执行。
我在查询分析器里面(同样连接到远程数据库)执行master.dbo.xp_cmdshell 'osql -U sa -P  -d TSDATA0001 -i E:\TSDATA.SQL'语句,结果是“无法打开输入文件 — E:\TSDATA.SQL”。
然后我查了T-SQL联机帮助,知道了SQL Server 用户使用 xp_cmdshell 执行命令提示符命令时,命令必须在 Windows 帐户的安全上下文中执行。因此远程服务器中E:\TSDATA.SQL是不存在的,理所当然不能执行。
可是我想通过程序实现数据库TSDATA0001执行本地机器中E:\TSDATA.SQL里的SQL命令,那该怎么实现呢??有没有好的建议,方案呢?????
等待中……

解决方案 »

  1.   

    我之前写一个软件时,也有相同的问题,怎么在客户机上用客户机的文件还原数据库到服务器。有两个办法:1、你在服务器上映射客户机上的TSDATA.SQL所在目录。在SQL语句中,使用映射过后的路径。2、把你TSDATA.SQL存到SQL,再从SQL存到服务器,再从服务器调用本地的TSDATA.SQL文件。
    请参考:http://community.csdn.net/Expert/topic/4573/4573186.xml?temp=.192074