Select 'BCP db..' + name +' out c:\db\' +name + '.txt' from sysobjects where type = 'U'
想导出db数据库中所有表,每个表生成一个文件
运行上面的命令不能生成文件,为什么啊?

解决方案 »

  1.   

    declare @str nvarchar(max)
    Select @str=isnull(@str,'')+'BCP db..'+name+' out c:\db\'+name+'.txt ' from sysobjects where type='U'
    exec (@str)
      

  2.   

    你的 select  语句只是形成了一个动态执行语句,但并没有去执行它,把它保存为一个字符串后,用 exec 执行.
      

  3.   

    declare @str nvarchar(max)
    这句不支持?我是用的sql server 2000
      

  4.   

    declare @str nvarchar(4000)
    Select @str=isnull(@str,'')+'BCP db..'+name+' out c:\db\'+name+'.txt ' from sysobjects where type='U'
    exec (@str)
    改成这样可以执行了,但是出错:
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '.' 附近有语法错误。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。
    服务器: 消息 132,级别 15,状态 1,行 1
    标签 'c' 已声明。标签名称在批查询或存储过程内部必须唯一。