2일차
The SqlServer Data Provider
ADO 프로그래밍을 해 보신 분이라면 SqlClient에 대해서 잘 아실껍니다.
이와 유사한 SqlServer라는 Data Provider가 있습니다.
SqlServer는 sqlaccess.dll를 참조하여 사용하실 수 있습니다.
SQL Server programming models
- SQL Server 2005 includes two data providers
n System.Data.SqlServer
n System.Data.SqlClient
SqlServer는 .Net로 만든 procedural code에서 사용할 수 있습니다. 이 전 게시물에도 이미 나온 내용이지만…
- UDF (User Define Function)
- SP (Stored Procedure)
- Trigger
등에서 사용할 수 있습니다.
일반적인 사용법은 SqlClient와 유사합니다.
차이점은 SqlClient는 SqlConnection을 사용하고,
SqlServer는 SqlContext를 사용한다는 점입니다.
또한, SqlServer를 사용하여 만든 procedural code는 SQL Server내에서 실행되므로, 별도의 connection을 맺거나, 데이터가 네트웍을 통해 이동하거나 하지 않습니다.
SqlContext
- SqlContext는 현재 실행중인 context를 나타냅니다.
n GetConnection() : 현재 connection을 얻을 때
n GetCommand() : 새로운 command를 얻을 때
n GetTransaction() : 현재 transaction을 얻을 때
n GetPipe() : output TDS stream의 pipe를 얻을 때
u Pipe는 메시지나 결과를 보낼 수 있다.
SqlDefinition/SqlExecutionContext
- SqlCommand는 제목과 같이 두 가지로 쪼개질 수 있다.
n SqlDefinition은 요청에 대한 정의를 나타낸다.
n SqlExecutionContext는 명령을 실행한다.
아주 많이 쓰는 쿼리가 있을 경우, SqlDefinition과 SqlExecutionContext 두 부분으로 나누어 SqlDefinition을 한 번만 정의한 후 실행 시 SqlExecutionContext만 실행하므로써, 보다 나은 성능을 기대할 수 있다.
물론 자세한 성능 비교는 SQL Server 2005 beta 3에서 할 수 있다고 한다.
자세한 코드는 생략…
Command results
- ADO 프로그래밍을 해 본 사람이라면 모두 쉽게 알 만한 내용들이다.
n Scalar result
n Single row result
n Multi-row result
SqlTransaction
- SqlContext.GetTransaction()으로부터 SqlTransactoin을 얻어와서 현재 트랜잭션이 있는지 유/무 등을 판별할 수는 있지만, 만약 진행 중인 Transaction이 있는 경우, 내부에서 그 트랜잭션을 commit, rollback 및 새 중첩 transaction을 시작할 수는 없다. 지원하지 않는다.
SqlTraggerContext
- SqlContext.GetTriggerContext()를 통해 얻어온 SqlTriggerContext를 이용하여 Trigger를 만들 수 있다.
n Tc.TriggerAction : 1(update), 2(insert), 4(delete)
오전에 배운 내용 정리 끝~
'programming > MSSQL' 카테고리의 다른 글
Essential SQL Server 2005 For Developers #4 (0) | 2004.12.21 |
---|---|
Essential SQL Server 2005 For Developers #2 (0) | 2004.12.20 |
Essential SQL Server 2005 For Developers #1 (0) | 2004.12.20 |