SQL Server에서 동시에 처리 할 수있는 트랜잭션 당 얼마나 많은 수의 INSERT
명령을 알고 있습니까? 기본적으로, 나는이 함수 SQLexcute(sql_text)
를 사용하여 실행되는 나는 INSERT
년대의 무리와 함께 긴 문자열 짓고 있어요 (8000 INSERT
명령 주위를, 각각 약 600 문자가) :SQL Server에서 트랜잭션 당 최대 삽입 수
for(obj in objects) {
sql_text += "INSERT(prop1, prop2, prop3, prop4, prop5) VALUES(" + obj.prop1 + "," + obj.prop2 + "," + obj.prop3 + "," + obj.prop4 + "," + obj.prop5+");"
}
SQLexcute(sql_text)
난 당신이 쿼리 텍스트를 생성하는 백엔드에 C#을 사용하고 추정하고 있습니다 : 여기
당신은 테이블 가치 PARAM에 대한 링크가 stringbuilder를 사용하여 문자열을 연결하는 대신 문자열에 무언가를 추가 할 때마다 문자열의 새 인스턴스가 만들어집니다 (C#의 문자열은 변경 불가능). SQL 질의에 이르기까지 한 번에 8000 개의 레코드를 삽입하는 것은 그다지 큰 문제가되지 않습니다. 또한 SQL 쿼리를 생성하기 전에 객체 속성에 대한 데이터를 정리하고 SQL 주입을 허용하지 않는다고 가정합니다. – user2366842
한 가지 명심해야 할 점은 SQL Server는 ** 한 번에 5000 개가 넘는 행을 삽입 할 경우 ** 테이블 수준의 단독 잠금 **으로 잠금을 ** 에스컬레이션합니다 ** - ** INSERT' 트랜잭션이 커밋 될 때까지 ** 예외적으로 잠길 것입니다 ** - 그 테이블에서 다른 작업 ('SELECT'조차도 가능하지 않습니다)이 그 테이블에서 가능하지 않습니다. –
제발 제발 * 문자열을 함께 쓰지 마세요. C# 인 경우'SqlCommand'에서'SqlParameter'를 사용하십시오.) : http://www.sommarskog.se/dynamic_sql.html#SQL_injection PS 쿼리 텍스트에 테이블 이름이 누락되었습니다. – Bridge