【问题标题】:Bcp stored procedure not writing file to diskBcp 存储过程未将文件写入磁盘
【发布时间】:2012-07-28 03:29:32
【问题描述】:

下面当我在代码或 sql server management studio 2008 中执行存储过程时,它说它成功复制了行,但我不确定它为什么不将文件写入磁盘。有人可以帮助我吗,这几天我一直在努力解决这个问题。我已经启用命令外壳和一切。奇怪的是它可以从命令行运行,但是当我从存储过程执行时,它不会将文件写入磁盘,可以帮助我吗

USE [ColorDb]
GO

ALTER PROCEDURE [dbo].[prc_WriteTableToTextDelimitedFile]
(
  @FilePath VarChar(256)

)
AS
BEGIN

DECLARE @sql varchar(8000)

SET @sql = 'bcp "SELECT * FROM ColorDb.dbo.ColorTable" queryout "'+ @FilePath +'" -c -t; -T -SXXXXXXXXXXXX'

Print @sql

exec master..xp_cmdshell @sql

END

RETURN

【问题讨论】:

    标签: sql-server sql-server-2008 bcp


    【解决方案1】:

    我会打印出@sql 和@FilePath 的内容。

    我刚刚通过 MS SQL Server 管理器调试器窗口运行了一些代码,您可以单步执行代码。我确实注意到您的引号似乎没有匹配,而且我看不到您将 @FilePath 初始化为任何内容的位置。查看您的最后一段,它似乎有一个无与伦比的双引号。

    我没有使用任何双引号,而是从 MSSQL 服务器管理器下的查询生成器中的查询运行的。我从查询窗口中获得了文件输出、移动文件、连接文件以及其他内容。

    就像这个简单的连接命令:

    Exec master..xp_cmdshell 'type c:\bcp\sysobjects.txt >> c:\bcp\a.txt'
    

    还有这个创建/输出命令:

    SELECT @sql = 'bcp master..sysobjects out c:\bcp\sysobjects.txt -c -t\t -T -S' + @@servername
    
    REPLACE( @sql, 'sysobjects.txt', @EmpRecordsFILENAME)
    
    EXEC master..xp_cmdshell @sql
    

    文件已创建,并使用这些简单的命令连接起来!

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多