很头疼的SQL Server问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 05:19:46
string sqlStar,strDir
strDir=space(255)
if GetCurrentDirectoryA(255,strDir)=0 then setnull(strDir)//获取当前目录

execute immediate "SET ANSI_NULLS ON";
execute immediate "SET ANSI_WARNINGS ON";

sqlStar="select a.*,b.NST_CNAM as dst_cnam into his_dstx from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=" + strDir + "\', 'select * from [dstx.DBF]') a," +&
"openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=" + strDir + "\', 'select * from [nsta.DBF]') b where a.DST_SDEP=b.NST_CODE"

EXECUTE IMMEDIATE "exec master..xp_cmdshell 'net start msdtc'";

EXECUTE IMMEDIATE :sqlStar;

if sqlca.sqlcode<>0 then
messagebox("错误:",sqlca.sqlerrtext + char(13)+char(10)+string(sqlca.sqlcode) )
end if

你的SQL SERVER和FOXPRO不在同一台机器上吧。

可以不用执行net start msdtc'

EXECUTE IMMEDIATE "exec master..xp_cmdshell 'net start msdtc'";
把这句话提前就可以了

执行两边其实是第一遍成功了一半,失败了一半,而第二遍的时候因为已经启动了需要的服务了,所以失败的那一半又成功了

理解一下就好了,不难