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에서 실행되므로 오류가 배치 스크립트 또는 파일 경로에 대한 권한이 있다고 가정합니다.