2일차

 

The SqlServer Data Provider

 

ADO 프로그래밍을 해 보신 분이라면 SqlClient에 대해서 잘 아실껍니다.

이와 유사한 SqlServer라는 Data Provider가 있습니다.

SqlServersqlaccess.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와 유사합니다.

차이점은 SqlClientSqlConnection을 사용하고,

SqlServerSqlContext를 사용한다는 점입니다.

또한, SqlServer를 사용하여 만든 procedural codeSQL Server내에서 실행되므로, 별도의 connection을 맺거나, 데이터가 네트웍을 통해 이동하거나 하지 않습니다.

 

SqlContext

-         SqlContext는 현재 실행중인 context를 나타냅니다.

n         GetConnection() : 현재 connection을 얻을 때

n         GetCommand() : 새로운 command를 얻을 때

n         GetTransaction() : 현재 transaction을 얻을 때

n         GetPipe() : output TDS streampipe를 얻을 때

u       Pipe는 메시지나 결과를 보낼 수 있다.

 

 

SqlDefinition/SqlExecutionContext

-         SqlCommand는 제목과 같이 두 가지로 쪼개질 수 있다.

n         SqlDefinition은 요청에 대한 정의를 나타낸다.

n         SqlExecutionContext는 명령을 실행한다.

 

아주 많이 쓰는 쿼리가 있을 경우, SqlDefinitionSqlExecutionContext 두 부분으로 나누어 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)

 

 

오전에 배운 내용 정리 끝~

 

 

+ Recent posts