2017-02-14 1 views
0

SQL Server에서 datetime 데이터 형식의 열 삽입/업데이트를 위해 병합 문을 실행하고 있습니다. 00 : 00 : 00 2014년 2월 3일처럼날짜 및/또는 시간을 뮬의 문자열에서 변환 할 때 변환이 실패했습니다. 일괄 처리

payload.date 보인다 배치가 오류와 함께 실패 00.000

'변환이 실패했을 때 문자열에서 날짜 및/또는 시간을 변환'

 <batch:step name="step_1"> 
    <batch:commit doc:name="Batch Commit" size="100"> 
      <db:execute-ddl config-ref="config" doc:name="merge" > 
       <db:dynamic-query><![CDATA[ 
       BEGIN 
       MERGE tablename AS Target 
       USING (SELECT '#[payload.key]') AS Source (ID) 
       ON (Destination.Id=Source.ID) 
       WHEN MATCHED THEN UPDATE SET 
       datefield = '#[payload.date]' 
       WHEN NOT MATCHED THEN 
       INSERT (datefield) values ('#[payload.date]'); 

       END]]></db:dynamic-query> 
          </db:execute-ddl> 
      </batch:commit> 
    </batch:step> 

하는 경우 일괄 커밋을 제거, 나는 어떤 오류가 발생하지 병합 성명을 잘 작동하고 날짜가 업데이트/DB에 삽입됩니다. 배치 커밋을 사용하고 싶습니다. 어떻게이 문제를 해결할 수 있습니까? DDL 동작을 실행을 위해

+0

SQL 서버가 에러를 던지고 사용될 수 없다 커밋 지원되지 않는다. 페이로드가 목록이라면 # [payload.date] 대신 무엇을 사용해야합니까? – user94538

답변

0

벌크 모드는 그렇게 배치 페이리스트이고 payload.date 일괄 커밋 내부 널 때문에

관련 문제