【问题标题】:Using SQL Server 2008 BCP utility to export a stored procedure (simple select)使用 SQL Server 2008 BCP 实用程序导出存储过程(简单选择)
【发布时间】:2014-05-30 06:12:09
【问题描述】:

我正在尝试从 SQL Server 2008 运行 BCP 实用程序。

我创建了一个非常简单的存储过程,名为GET_GL_ACCOUNTS

这里是存储过程:

ALTER PROCEDURE [dbo].[GET_GL_ACCOUNTS]
AS
     SELECT DISTINCT 
         RTRIM (s1.SGMNTID) AS 'AccCode',
         RTRIM (s1.DSCRIPTN) AS 'CodeDesc', 
         CASE
            WHEN  s1.SGMTNUMB = '1' THEN '1' 
            WHEN s1.SGMTNUMB = '2' THEN '2'
            WHEN s1.SGMTNUMB = '3' THEN '110'
            WHEN s1.SGMTNUMB = '4' THEN '4'
            WHEN s1.SGMTNUMB = '5' THEN '120'
         END AS 'AccountType_id',
         CASE 
            WHEN s1.SGMTNUMB = '2' THEN LEFT(s1.SGMNTID, 2)
            ELSE 'DEFAULT'
         END AS 'AccGroupName'
     FROM 
         GL40200 s1

     UNION 

     SELECT  
         REPLACE ([ACTNUMBR_1]+'-'+ [ACTNUMBR_2]+'-'+ [ACTNUMBR_3]+'-'+[ACTNUMBR_4]+'-'+  [ACTNUMBR_5],' ', '') AS 'AccCode',
         '' AS 'CodeDesc',
         '0' AS 'AccountType_id',
         'Default' AS 'AccGroupName'
     FROM 
         GL00100 a

这是我的BCP 命令:

EXEC xp_cmdshell 'bcp 'EXEC NCOA.dbo.GET_GL_ACCOUNTS' QUERYOUT "E:\dbexport\gl.txt"  -c -t, -T -S'

当我通过 SQL Server Management Studio 执行此操作时,我收到以下错误消息:

消息 8146,级别 16,状态 1,过程 GET_GL_ACCOUNTS,第 0 行
过程 GET_GL_ACCOUNTS 没有参数并且提供了参数。

我需要参数和参数来运行它吗?

【问题讨论】:

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


    【解决方案1】:

    看来您的问题是如何引用该语句。试试这个:

    EXEC xp_cmdshell 'bcp "EXEC NCOA.dbo.GET_GL_ACCOUNTS" QUERYOUT "E:\dbexport\gl.txt"  -c -t, -T -S'
    

    【讨论】:

    • 产生这个输出------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------ SQLState = S1000, NativeError = 0 错误 = [Microsoft][SQL Server Native Client 10.0]无法打开 BCP 主机数据文件 NULL(3 行( s) 受影响)
    • @ShawnRahmani 路径 E:\dbexport\gl.txt 在您正在执行代码的服务器上是否有效(正在运行的 sql 服务器)?错误消息表明它可能不是。
    • 这最终是一个文件夹权限问题。当我将 eport 移动到我的备份文件夹时,它可以工作。谢谢@jpw
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多