대량 데이터를 사용하는 SQL Server에서 밀리 초 단위의 datetime

.net c# sql sqlbulkcopy sql-server-2005

문제

예외를 throw하는이 코드가 있습니다.

SqlConnection con;
con = new SqlConnection(connectionStr);
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;     
cmd.CommandText = @"select [ID], [VERSION_ID], '08/26/2015 09:33:24:717 AM' as [Added_Dt],     [Loc_ID] as Column1
from dbo.Source where Added_Dt between CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM') and CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM')";

    cmd.CommandTimeout = con.ConnectionTimeout;
    con.Open();
    SqlDataReader rdr = cmd.ExecuteReader();
    System.Data.SqlClient.SqlBulkCopy bcp = new SqlBulkCopy(destconnectionStr, SqlBulkCopyOptions.UseInternalTransaction);
    bcp.BatchSize = (int)Global.BatchWriteThreshold;
    bcp.DestinationTableName = destinationTableName;
    bcp.NotifyAfter = (int)Global.BatchWriteThreshold;
    bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
    bcp.WriteToServer(rdr);

대상 테이블 (SQL Server 2005) : ID (int, not null), VERSION_ID (int, not null), Added_Dt (DATETIME, not null), Column1 (varchar2 (50), not null)

SqlBulkCopy와 함께 사용하면 예외가 발생하지만 단일 업데이트에서 ado.net을 사용하거나 SQL Management Studio에서 직접 사용할 때 문제가 발생하지 않습니다. 밀리 초 부분을 제거하면 일괄 처리가 예외없이 실행되지만 밀리 초가 있어야한다는 것을 알았습니다. 문제를 해결하는 방법?

수락 된 답변

'08/24/2015 09:25:43:283 AM' 은 (는) 올바른 날짜 문자열이 아닙니다. 마지막 : a이어야합니다 . . 의미:

'08/24/2015 09:25:43.283 AM'

물론 이것은 SSMS에서 오류없이 변환됩니다.

SELECT CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM');

수정이 도움이되지 않으면 정확한 예외 메시지를 제공해야합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.