1 首先确认sqlsever所在的机器对共享文件夹有读取权限
2 注意语法
BULK INSERT test FROM '\\机器名\共享名\test.csv'  --核对下这里
WITH (
   DATAFILETYPE = 'char',
   FIELDTERMINATOR = ' ',
   ROWTERMINATOR ='\n'
)
3 核对以上问题后,如果sqlserver所在的windows没有登陆的话 登陆后再试试

解决方案 »

  1.   

    --1.映射
    exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator'/*--说明:
    z: 是映射网络路径对应本机的盘符,与下面的备份对应
    \\xz\c$ 是要映射的网络路径
    xz\administrator xz是远程的计算机名,administrator是登陆的用户名
    密码                        上面指定的administrator用户的密码
    --*/--2.做你的处理
    --3.备份完成后删除映射
    exec master..xp_cmdshell 'net use z: /delete'
      

  2.   

    要彻底解决问题, 主要还把权限设置好, 参考下面的备份文件共享目录权限设置方法去解决目录的共享权限就可以了下面假设是假设A服务器上的数据库备份到B服务器上的共享目录权限设置(两台服务器应该在局域网内,允许目录共享访问)::1.机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
    我的电脑
    --控制面板
    --管理工具
    --计算机管理
    --用户和组
    --右键用户
    --新建用户
    --建立一个隶属于administrator组的登陆windows的用户2.在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
    我的电脑--D:\ 新建一个目录,名为: BAK
    --右键这个新建的目录
    --属性--共享
    --选择"共享该文件夹"
    --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
    --确定
    3.设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
    开始--程序--管理工具--服务
    --右键 MSSQLSERVER
    --属性--登陆--选择"此账户"
    --输入或者选择第一步中创建的windows登录用户名
    --"密码"中输入该用户的密码
    --确定
    --同样的方法设置 SQLSERVERAGENT4.在A机器上完成对B机器BAK目录的映射5.查询分析器中执行下面的语句,检验是否成功:
      exec master..xp_cmdshell 'dir 映射的盘符'6.A服务器上做备份计划备注:创建一个新的用户只是为了让MSSQLSERVER服务的启动帐户与共享目录的有效访问同名且密码相同,这样才能通过验证(所以你也可以用其他有效的用户来代替,只需要满足用户名和密码相同,并且拥有足够的权限)
      

  3.   

    现在exec master..xp_cmdshell 'dir z:\'都可以看到文件了但BULK INSERT #Stock
    FROM 'z:\**.xls'
    还是不行,好郁闷啊!
      

  4.   

    个人感觉exec master..xp_cmdshell 是使用的登陆SQL服务器的帐户,而BULK INSERT #Stock
    FROM 'z:\**.xls'是SQL的进程帐户,因此在执行BULK INSERT #Stock
    FROM 'z:\**.xls'时没有发现z:盘.
      

  5.   

    xp_cmdshell 可以了的话, 说明权限和访问就没有问题.bulk 可能不支持网络文件路径, 改天找个环境测试一下.