태그 보관물: batch

batch

배치 오류 SQL Server 대량 삽입 = @return_value GO 저장 절차 USE [LVSDB_DRP01] GO /****** Object:

SQL Server 저장 프로 시저를 실행하는 배치 파일에 스크립트를 사용하려고합니다. 저장 프로시 저는 .CSV 파일의 데이터를 SQL Server 테이블에 대량 삽입합니다. SQL Server에서 저장 프로 시저를 실행하면 아무런 문제없이 실행됩니다. 그러나 배치 파일에서 작동 시키려고하면 실패합니다.

내 배치 스크립트는

set STEP_NBR=STEP113
set SQL_Script_Name= CST_SN_ADD_SPS_CUSTOMER_ORDER_STG_TMP
set ERROR_MSG=%STEP_NBR% %SQL_Script_Name%
call "%DIR_BAT%\CreateLAFMessage.bat" "%~n0.bat-> %STEP_NBR% - Running %SQL_Script_Name%.sql" %_LAF_MSG_DETAILS%
SQLCMD.EXE %SQLCMD_VARS% -S%DB_SERVER_NAME% -d%DB_SP01_NAME% -w2048 -E -b -i"%DIR_SQL%\%SQL_Script_Name%.sql" -o"%DIR_LOG%\%SQL_Script_Name%.lst"
IF NOT %ERRORLEVEL%==0 GOTO ON_ERROR

SQL 스크립트는 저장 프로 시저를 호출합니다.

DECLARE @return_value int
EXEC    @return_value = [dbo].[CST_SN_ADD_SPS_CUSTOMER_ORDER_STG_TMP]
SELECT  'Return Value' = @return_value
GO

저장 절차

USE [LVSDB_DRP01]
GO
/****** Object:  StoredProcedure [dbo].
[CST_SN_ADD_SPS_CUSTOMER_ORDER_STG_TMP]    Script Date: 9/10/2018 10:28:30 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER Procedure [dbo].[CST_SN_ADD_SPS_CUSTOMER_ORDER_STG_TMP]
as
BEGIN

BEGIN TRANSACTION;

IF OBJECT_ID('staging.dbo.ADD_CUSTOMER_ORDER_STG_TMP', 'U') IS NULL
CREATE TABLE [staging].[dbo].[ADD_CUSTOMER_ORDER_STG_TMP](
[ITEM_INDX] [nvarchar](50) NOT NULL,
[LOC_INDX] [nvarchar](50) NOT NULL,
[CUST_ORD_INDX] [nvarchar](50) NOT NULL,
[CUST_ORD_LIN_NBR] [nvarchar](50) NOT NULL,
[CUST_ORD_ORD_DATE] [date] NOT NULL,
[CUST_ORD_QTY] [nvarchar](50) NULL,
[CUST_SHP_QTY] [nvarchar](50) NULL,
[SET_ITEM_INDX] [nvarchar](50) NOT NULL,
[HEADER_COMPONENT] [nvarchar](50) NOT NULL,
[BUCKET] [nvarchar](50) NOT NULL
)

IF OBJECT_ID('staging.dbo.ADD_CUSTOMER_ORDER_STG_TMP', 'U') IS NOT NULL
Truncate table staging.dbo.ADD_CUSTOMER_ORDER_STG_TMP;

IF OBJECT_ID('staging.dbo.ADD_CUSTOMER_ORDER_STG_TMP', 'U') IS NOT NULL
BULK INSERT staging.dbo.ADD_CUSTOMER_ORDER_STG_TMP
FROM '\\usashsmdbpcw02f\C$\SNI_Logility\ADD_CUSTOMER_ORDER_STG.csv'
WITH 
  (
    FIELDTERMINATOR = ',',
    FIRSTROW = 2
--    ROWTERMINATOR = '\r\n'
  );

COMMIT TRANSACTION;
END

저장 프로 시저는 SQL Server에서 실행되므로 오류가 배치 스크립트 또는 파일 경로에 대한 권한이 있다고 가정합니다.



답변