@filename = 'e:\\test.txt', -----------
导出路径有问题,应该改为
@filename = 'e:\test.txt', --

解决方案 »

  1.   

    产生以下错误: 
    1 SQLState = HY000, NativeError = 0 
    2 Error = [Microsoft][SQL Native Client]无法打开 BCP 主数据文件 
    3 NULL 
      

  2.   

    改为@filename = 'e:\test.txt', -- 
    错误依旧呀
    先谢谢了各位,结贴时我给辛苦分
      

  3.   

    @sql,不允许有回车符合 ???ojuju10兄
    怎麽讲
      

  4.   


    alter procedure [dbo].[File2Table] 
    @servername varchar(200) --服务器名 
    ,@username varchar(200)  --用户名,如果用NT验证方式,则为空'' 
    ,@password varchar(200)  --密码 
    ,@filename varchar(1000) --目录名+文件名 
    ,@tbname varchar(500)='' --数据库..表名 
    ,@isout bit=1    --1为导出(默认),0为导入 
    ,@fdsplit varchar(10)='\t' --字段分隔符,默认为制表符 
    ,@rowsplit varchar(10)='\n' --记录分隔符,默认为回车符 
    as 
    declare @sql varchar(8000) set @sql='bcp "'+@tbname 
     +case when @isout=1 then '" out' else '" in' end 
     +'/i'+' "'+@filename+'" /c' +' /S"'+@servername 
     +'" /U"'+@username 
     +'" /P"'+@password+'"' 
     +' /t"'+@fdsplit+'"' 
     +' /r"'+@rowsplit+'"' 
    --去掉回车set @sql=replace(@sql,char(13)+char(10),'')exec master..xp_cmdshell @sql 
      

  5.   


    有回车就报错啊,bcp我用的比较多
      

  6.   

    Microsoft][SQL Native Client]无法打开 BCP 主数据文件 你的文件有问题吧?在 sql 中用 bcp , 要求文件在 sql服务器上
      

  7.   

    sql语句是在sql服务器上执行的, 所以指定的文件要基于 sql 服务器, 不能用本地路径.
    如果文件在共享目录中, 要求正确地配置了 sql server 服务启动用户(保证该用户能访问该共享目录)
      

  8.   

    你将导出的文件的路径改为装sql服务器的物理路径,就OK 
      

  9.   

    我用windows 身份认证的方式实现了,但SQL认证方式不知道如何设置
      

  10.   


    ---
    传入sa,和sa密码,为什么要搞一个动态的呢,静态的多好
      

  11.   

    我也是这麽想的,无奈公司的软件原来是用windows 认证的,我再问一下
    我在SQL服务器上执行EXEC master..xp_cmdshell 'BCP sydb_v2..min30_tb out E:\sydb_backup\test.txt -c -S"DATACENTER" -T'语句实现
    了把数据表数据导出道TXT文件中。可我把服务器-S"改为局域网SQL服务器的名字"执行以上语句产生以下错误:
    Error = [Microsoft][SQL Native Client][SQL Server]用户 '' 登录失败。该用户与可信 SQL Server 连接无关联。
    如何改?ojuju10 兄给点建议
      

  12.   


    EXEC master..xp_cmdshell 'BCP sydb_v2..min30_tb out E:\sydb_backup\test.txt -c -S"DATACENTER" -U"sa" -P"sa的密码"'
      

  13.   

    在windows中建立一个用户, 该用户放在管理员组
    在 sql 服务(控制面板--服务中, sql2005直接用sql server配置管理器)属性中, 设置登录身份为该用户这样该用户能够访问网络路径
    将你的文件所在的目录共享, 设置合适的访问权限, 以便能从 sql 服务器访问该共享目录
    这样你的语句就可以访问文件了验证的方法是执行类似下面的语句可以列出共享目录
    exec master..xp_cmdshell 'dir \\计算机名\共享目录名'
      

  14.   

    谢谢老大了,也多谢ojuju10 兄,我该给分了.
      

  15.   

    在windows中建立一个用户, 该用户放在管理员组 
    在 sql 服务(控制面板--服务中, sql2005直接用sql server配置管理器)属性中, 设置登录身份为该用户 这样该用户能够访问网络路径 
    将你的文件所在的目录共享, 设置合适的访问权限, 以便能从 sql 服务器访问该共享目录 
    这样你的语句就可以访问文件了 验证的方法是执行类似下面的语句可以列出共享目录 
    exec master..xp_cmdshell 'dir \\计算机名\共享目录名'
    ////////////////////////////////////////////////////////////////////////////////////////
    老大你说的这段话我试着做了不行呀exec master..xp_cmdshell 'dir \\计算机名\共享目录名' 这个命令是列出我能看到的共享目录吗
    我来是给分的,看了这段话,我发现我得能明白,这样我就彻底明白了并能随意导入导出数据库到任意的地点了。太好了,不亏为大版主呀,我的偶像 
      

  16.   

    lz,我现在遇到了你的那个问题,能跟我说说怎么解决这个问题吗?我看了你这个帖子,但是还没有掉问题。现在的情况是:导出到安装sql server的电脑就没有,但是导出到局域网内另一台电脑出错“Error = [Microsoft][SQL Native Client]无法打开 BCP 主数据文件”
      

  17.   

    lz,我现在遇到了你的那个问题,能跟我说说怎么解决这个问题吗?我看了你这个帖子,但是还没有掉问题。现在的情况是:导出到安装sql server的电脑就没有问题,但是导出到局域网内另一台电脑出错“Error = [Microsoft][SQL Native Client]无法打开 BCP 主数据文件”