--购物卡导入到工资基本资料列表
ALTER     PROC [dbo].[P_EXCEL_TO_SQL] 
@FileName VARCHAR(8000),
@FilePath     VARCHAR(8000),
@ComputerName VARCHAR(8000),
@ComputerUser VARCHAR(8000),
@ComputerPSD  VARCHAR(8000)
AS--先删险购物卡表里所有记录
DELETE FROM GOU
--然后从EXCEL文件插入记录
DECLARE @SQL VARCHAR(8000)
DECLARE @SQL1 VARCHAR(8000)
SET @SQL1='exec master..xp_cmdshell ''net use z: '  +  @FilePath  +  '"' +  @ComputerPSD  +  '"'  +  ' /user:'  +  @ComputerName  +  '\'  +  @ComputerUser  +  ''''EXEC (@SQL1)SET @SQL=
'INSERT INTO GOU
SELECT BH,XM,JE
FROM OPENROWSET
(''MICROSOFT.JET.OLEDB.4.0''
,''Excel 5.0;HDR=YES;DATABASE=' + @FilePath +  ''',GOU$)'
EXEC (@SQL)exec master..xp_cmdshell 'net use z: /delete'
--更新工资基本资料列表
UPDATE EMPLOYEE
SET RUSER18=0UPDATE EMPLOYEE
SET RUSER18=B.JE
FROM EMPLOYEE A,GOU B
WHERE A.BH=B.BH--服务器为SER--在本地客户端执行下面的语句不行(本地电脑的查询分析器上 haochin为本地电脑,并已共享一个123的目录,里面有gou.xls)
--EXEC [dbo].[P_EXCEL_TO_SQL] '\\haochin\123\gou.xls','\\haochin\123','haochin','administrator','abc'
--大家帮我看看是怎么回事啊,是不是存储过程有什么问题,还是网络或电脑的用户名密码之类的问题。

解决方案 »

  1.   

    SET @SQL=
    'INSERT INTO GOU
    SELECT BH,XM,JE
    FROM OPENROWSET
    (''MICROSOFT.JET.OLEDB.4.0''
    ,''Excel 5.0;HDR=YES;DATABASE=' + @FilePath +  ''',GOU$)'这里应该是@FileName吧?
      

  2.   

    SET @SQL1='exec master..xp_cmdshell ''net use z: '  +  @FilePath  +  '"' +  @ComputerPSD  +  '"'  +  ' /user:'  +  @ComputerName  +  '\'  +  @ComputerUser  +  ''''
    --直接執行上面的語句,看能都成功,確定你權限是否足夠
      

  3.   

    xp_cmdshell 对权限要求比较高。
      

  4.   


    强人 FileName
    EXEC [dbo].[P_EXCEL_TO_SQL] '\\haochin\123\gou.xls'已经映射了,还用网络路径呀? 
      

  5.   


    (0 row(s) affected)output                                                                                                                                                                                                                                                          
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    发生系统错误 53。
    NULL
    找不到网络路径。
    NULL
    NULL(5 row(s) affected)Server: Msg 7399, Level 16, State 1, Line 1
    OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
    dobear_0922说得对,那个是方是@FileName,但问题是一样的。
      

  6.   

    看错误提示,前面映射就没有成功感觉是缺少空格吧? -- 试试
    SET @SQL1='exec master..xp_cmdshell ''net use z: '  +  @FilePath  +  '"' +  @ComputerPSD  +  '"'  +  ' /user:'  +  @ComputerName  +  '\'  +  @ComputerUser  +  ''''--> 改成
    SET @SQL1='exec master..xp_cmdshell ''net use z: "'  +  @FilePath  +  '" "' +  @ComputerPSD  +  '"'  +  ' /user:'  +  @ComputerName  +  '\'  +  @ComputerUser  +  ''''
      

  7.   

    另外, 注意 4 楼提到的问题
    ,''Excel 5.0;HDR=YES;DATABASE=' + @FilePath +  ''',GOU$)'
    -- 应该是 
    ,''Excel 5.0;HDR=YES;DATABASE=' + @FileName +  ''',GOU$)'
      

  8.   

    同志们,11F Z老大的回答是正解,努力向Z老大学习。
    敢问一下,老大贵庚啊。
      

  9.   

    exec master..xp_cmdshell 'net use z:  \\192.168.0.10\tools "huang"  /user:server\administrator'
    这个是正常连接的句子