내 질문은 간단합니다 : 차이점 / 유사점 / 카디널리티는 무엇입니까
- 업무
- 배치
- 연결 및
- 진술
SQL Server에서?
내가 이해하는 한 연결은 SQL Server 인스턴스와 일괄 처리로 그룹화 된 명령문 모음이 실행되는 클라이언트 간의 단일 통신 채널입니다. 배치는 하나 이상의 트랜잭션에 암시 적으로 또는 명시 적으로 매핑됩니다. 이 올바른지?
내 질문은 간단합니다 : 차이점 / 유사점 / 카디널리티는 무엇입니까
SQL Server에서?
내가 이해하는 한 연결은 SQL Server 인스턴스와 일괄 처리로 그룹화 된 명령문 모음이 실행되는 클라이언트 간의 단일 통신 채널입니다. 배치는 하나 이상의 트랜잭션에 암시 적으로 또는 명시 적으로 매핑됩니다. 이 올바른지?
답변:
거의 요
배치는 실행해야 할 배치 명령입니다. 트랜잭션은 전체적으로 성공 또는 실패를 보장하는 일련의 명령입니다 (즉, 명령의 절반을 완료하지 못하고 나머지는 실패 할 경우 실패합니다).
내가 아는 한 SQL Server는 연결 풀링을 사용하므로 클라이언트 아이디어 당 하나의 연결에 의존하지 않습니다.
트랜잭션과 배치는 두 가지 독립적 인 개념입니다. 둘 다 일대 다 구성으로 사용할 수 있습니다.
트랜잭션 블록은 단일 "작업 단위"로, 커밋 된 SQL은 완전히 작동하거나 전혀 작동하지 않아야한다는 개념입니다. 예를 들어 서로 연결된 두 테이블을 업데이트하는 경우 데이터 변경 사항을 커밋하려면 둘 다 성공해야합니다. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]
배치는 Microsoft 개념입니다. sqlcmd 및 osql과 같이 Microsoft에서 만든 도구를 사용하면 배치가 단일 실행 계획을 보장합니다. 예를 들어 변수를 만들어 배치 외부에서 사용하면 도구에서 오류가 발생합니다. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]
따라서 하나의 트랜잭션 블록 내에서 여러 테이블을 업데이트하는 여러 배치를 가질 수 있습니다. 그들이 개별 배치 실행 계획을 위반하지 않는 한.
또한 배치 내에서 여러 트랜잭션 블록을 가질 수 있으므로 테이블과 같은 데이터베이스 엔터티간에 데이터 무결성을 보장 할 수 있습니다.
연결은 단순히 서버에서 쿼리를 실행하도록 승인하는 통신 핸드 셰이크입니다.
문은 쿼리를 구성하는 개별 줄입니다. GO (T-Sql 배치 구분 기호)와 BEGIN TRANSACTION (새 트랜잭션 블록을 시작하기위한 ANSI SQL)은 모두 명령문입니다.