.NET Framework 데이터 공급자

.NET Framework 데이터 공급자는 데이터베이스에 연결하고, 명령을 실행하고, 결과를 검색하는 데 사용됩니다. 검색된 결과는 곧바로 처리되거나 DataSet 에 저장되어 필요한 경우 사용자에게 노출되거나 여러 소스의 데이터와 함께 사용되거나 계층 간에 원격으로 사용됩니다. .NET Framework 데이터 공급자는 간단하여 데이터 원본과 사용자 코드 간에 최소의 계층을 만들며 기능 저하 없이 성능을 향상시킵니다.

다음 표에는 .NET Framework에 포함된 데이터 공급자가 나와 있습니다.

.NET Framework 데이터 공급자(.NET Framework data provider) 설명
.NET Framework Data Provider for SQL Server Microsoft SQL Server에 대한 데이터 액세스를 제공합니다. System.Data.SqlClient 네임스페이스를 사용합니다.
.NET Framework Data Provider for OLE DB OLE DB를 사용하여 노출된 데이터 소스에서 사용합니다. System.Data.OleDb 네임스페이스를 사용합니다.
.NET Framework Data Provider for ODBC OLE DB를 사용하여 노출된 데이터 소스에서 사용합니다. System.Data.Odbc 네임스페이스를 사용합니다.
.NET Framework Data Provider for Oracle Oracle 데이터 소스에서 사용합니다. .NET Framework Data Provider for Oracle은 Oracle 클라이언트 소프트웨어 버전 8.1.7 이상을 지원하고 System.Data.OracleClient 네임스페이스를 사용합니다.
EntityClient 공급자 EDM(엔터티 데이터 모델) 애플리케이션에 대한 데이터 액세스를 제공합니다. System.Data.EntityClient 네임스페이스를 사용합니다.
.NET Framework Data Provider for SQL Server Compact 4.0. Microsoft SQL Server Compact 4.0에 대한 데이터 액세스를 제공합니다. System.Data.SqlServerCe 네임스페이스를 사용합니다.

.NET Framework 데이터 공급자의 핵심 개체

다음 표에서는 .NET Framework 데이터 공급자를 구성하는 4가지 핵심 개체에 대해 간략하게 설명합니다.

Object 설명
Connection 특정 데이터 소스에 연결합니다. 모든 Connection 개체의 기본 클래스는 DbConnection 클래스입니다.
Command 데이터 소스에 대해 명령을 실행합니다. Parameters 를 노출하고 TransactionConnection범위 내에서 실행할 수 있습니다. 모든 Command 개체의 기본 클래스는 DbCommand 클래스입니다.
DataReader 데이터 소스에서 앞으로만 이동 가능한 읽기 전용 데이터 스트림을 읽습니다. 모든 DataReader 개체의 기본 클래스는 DbDataReader 클래스입니다.
DataAdapter DataSet 을 채우고 업데이트 내용을 데이터 소스에 적용합니다. 모든 DataAdapter 개체의 기본 클래스는 DbDataAdapter 클래스입니다.

이 문서 앞부분의 표에 나열된 핵심 클래스 외에도 .NET Framework 데이터 공급자에는 다음 표에 나열된 클래스도 포함되어 있습니다.

Object 설명
Transaction 데이터 소스의 트랜잭션에 명령을 인리스트먼트합니다. 모든 Transaction 개체의 기본 클래스는 DbTransaction 클래스입니다. ADO.NET에서는 System.Transactions 네임스페이스에 있는 클래스를 사용하여 트랜잭션에 대한 지원을 제공합니다.
CommandBuilder DataAdapter 의 명령 속성을 자동으로 생성하거나 저장 프로시저에서 매개 변수 정보를 파생하여 Parameters 개체의 Command 컬렉션을 채우는 도우미 개체입니다. 모든 CommandBuilder 개체의 기본 클래스는 DbCommandBuilder 클래스입니다.
ConnectionStringBuilder Connection 개체에서 사용하는 연결 문자열의 내용을 간단히 만들고 관리할 수 있도록 하는 도우미 개체입니다. 모든 ConnectionStringBuilder 개체의 기본 클래스는 DbConnectionStringBuilder 클래스입니다.
Parameter 명령과 저장 프로시저에 대한 입력, 출력 및 반환 값 매개 변수를 정의합니다. 모든 Parameter 개체의 기본 클래스는 DbParameter 클래스입니다.
Exception 데이터 소스에서 오류가 발생하면 반환됩니다. 클라이언트에서 발생한 오류의 경우 .NET Framework 데이터 공급자는 .NET Framework 예외를 throw합니다. 모든 Exception 개체의 기본 클래스는 DbException 클래스입니다.
Error 데이터 소스에서 반환한 경고 또는 오류에서 정보를 노출시킵니다.
ClientPermission .NET Framework 데이터 공급자 코드 액세스 보안 특성에 제공됩니다. 모든 ClientPermission 개체의 기본 클래스는 DBDataPermission 클래스입니다.

.NET Framework Data Provider for SQL Server(SqlClient)

.NET Framework Data Provider for SQL Server(SqlClient)는 자체 프로토콜을 사용하여 SQL Server와 통신합니다. 이 공급자는 OLE DB 또는 ODBC(Open Database Connectivity) 계층을 추가하지 않고 SQL Server에 직접 액세스하도록 최적화되어 있어 간단하며 효율적으로 작동합니다. 다음 그림은 .NET Framework Data Provider for SQL Server와 .NET Framework Data Provider for OLE DB를 비교한 것입니다. .NET Framework Data Provider for OLE DB는 연결 풀링 및 트랜잭션 서비스를 제공하는 OLE DB 서비스 구성 요소와 데이터 원본에 대한 OLE DB 공급자 모두를 통해 OLE DB 데이터 원본과 통신합니다.

참고 항목

.NET Framework Data Provider for ODBC는 .NET Framework Data Provider for OLE DB와 유사한 아키텍처를 가지고 있습니다. 예를 들어 ODBC 서비스 구성 요소를 호출합니다.

Data providers
.NET Framework Data Provider for SQL Server와 .NET Framework Data Provider for OLE DB 비교

.NET Framework Data Provider for SQL Server 클래스는 System.Data.SqlClient 네임스페이스에 있습니다.

.NET Framework Data Provider for SQL Server는 로컬 및 분산 트랜잭션을 모두 지원합니다. 분산 트랜잭션의 경우 .NET Framework Data Provider for SQL Server는 기본적으로 트랜잭션에 자동으로 참여하고 Windows 구성 요소 서비스 또는 System.Transactions에서 트랜잭션 세부 정보를 가져옵니다. 자세한 내용은 트랜잭션 및 동시성을 참조하세요.

다음 코드 예제에서는 System.Data.SqlClient 네임스페이스를 애플리케이션에 포함하는 방법을 보여 줍니다.

Imports System.Data.SqlClient  
using System.Data.SqlClient;  

.NET Framework Data Provider for OLE DB

.NET Framework Data Provider for OLE DB(OleDb)는 COM interop을 통해 네이티브 OLE DB를 사용하여 데이터 액세스를 사용하도록 설정합니다. .NET Framework Data Provider for OLE DB는 로컬 및 분산 트랜잭션을 모두 지원합니다. 분산 트랜잭션의 경우, 기본적으로 .NET Framework Data Provider for OLE DB는 트랜잭션에 자동으로 참여하고 Windows Component Services로부터 트랜잭션 세부 정보를 얻습니다. 자세한 내용은 트랜잭션 및 동시성을 참조하세요.

다음 표는 ADO.NET으로 테스트된 공급자를 보여 줍니다.

드라이버 공급자
SQLOLEDB Microsoft OLE DB Provider for SQL Server
MSDAORA Microsoft OLE DB provider for Oracle
Microsoft.Jet.OLEDB.4.0 OLE DB provider for Microsoft Jet

참고 항목

ASP.NET 애플리케이션과 같은 다중 스레드 애플리케이션의 경우 Access(Jet) 데이터베이스를 데이터 원본으로 사용하지 않는 것이 좋습니다. Jet를 ASP.NET 애플리케이션의 데이터 원본으로 사용해야 하는 경우 Access 데이터베이스에 연결하는 ASP.NET 애플리케이션에서 연결 문제가 발생할 수 있습니다.

.NET Framework Data Provider for OLE DB는 OLE DB 버전 2.5 인터페이스를 지원하지 않습니다. OLE DB 2.5 인터페이스에 대한 지원이 필요한 OLE DB 공급자는 .NET Framework Data Provider for OLE DB와 함께 올바르게 작동하지 않습니다. 여기에는 Microsoft OLE DB Provider for Exchange와 Microsoft OLE DB Provider for Internet Publishing이 포함됩니다.

.NET Framework Data Provider for OLE DB는 ODBC용 OLE DB 공급자(MSDASQL)와 함께 작동하지 않습니다. ADO.NET을 사용하여 ODBC 데이터 원본에 액세스하려면 .NET Framework Data Provider for ODBC를 사용합니다.

.NET Framework Data Provider for OLE DB 클래스는 System.Data.OleDb 네임스페이스에 있습니다. 다음 코드 예제에서는 System.Data.OleDb 네임스페이스를 애플리케이션에 포함하는 방법을 보여 줍니다.

Imports System.Data.OleDb  
using System.Data.OleDb;  

.NET Framework Data Provider for ODBC

.NET Framework Data Provider for ODBC(Odbc)는 네이티브 ODBC DM(드라이버 관리자)을 사용하여 데이터 액세스를 사용하도록 설정합니다. ODBC 데이터 공급자는 로컬 및 분산 트랜잭션을 모두 지원합니다. 분산 트랜잭션의 경우, 기본적으로 ODBC 데이터 공급자는 트랜잭션에 자동으로 참여하고 Windows Component Services로부터 트랜잭션 세부 정보를 얻습니다. 자세한 내용은 트랜잭션 및 동시성을 참조하세요.

다음 표는 ADO.NET으로 테스트한 ODBC 드라이버를 보여 줍니다.

드라이버
SQL Server
Microsoft ODBC for Oracle
Microsoft Access Driver(*.mdb)

.NET Framework Data Provider for ODBC 클래스는 System.Data.Odbc 네임스페이스에 있습니다.

다음 코드 예제에서는 System.Data.Odbc 네임스페이스를 애플리케이션에 포함하는 방법을 보여 줍니다.

Imports System.Data.Odbc  
using System.Data.Odbc;  

참고 항목

.NET Framework Data Provider for ODBC에는 MDAC 2.6 이상 버전이 필요하며 MDAC 2.8 SP1이 권장됩니다.

.NET Framework Data Provider for Oracle

.NET Framework Data Provider for Oracle(OracleClient)을 사용하면 Oracle 클라이언트 연결 소프트웨어를 통해 Oracle 데이터 원본에 대한 데이터 액세스가 가능합니다. 이 데이터 공급자는 Oracle 클라이언트 소프트웨어 버전 8.1.7 이상을 지원합니다. 또한 로컬 및 분산 트랜잭션을 모두 지원합니다. 자세한 내용은 트랜잭션 및 동시성을 참조하세요.

.NET Framework Data Provider for Oracle을 사용하려면 Oracle 데이터 원본에 연결하기 전에 시스템에 Oracle 클라이언트 소프트웨어(버전 8.1.7 이상 버전)가 있어야 합니다.

.NET Framework Data Provider for Oracle 클래스는 System.Data.OracleClient 네임스페이스에 있으며 System.Data.OracleClient.dll 어셈블리에 포함되어 있습니다. 데이터 공급자를 사용하는 애플리케이션을 컴파일할 때 System.Data.dllSystem.Data.OracleClient.dll 을 모두 참조해야 합니다.

다음 코드 예제에서는 System.Data.OracleClient 네임스페이스를 애플리케이션에 포함하는 방법을 보여 줍니다.

Imports System.Data  
Imports System.Data.OracleClient  
using System.Data;  
using System.Data.OracleClient;  

.NET Framework 데이터 공급자 선택

애플리케이션의 디자인 및 데이터 원본에 따라 .NET Framework 데이터 공급자를 선택하면 애플리케이션의 성능, 기능 및 무결성을 개선시킬 수 있습니다. 다음 표에서는 각 .NET Framework 데이터 공급자의 장점과 제한 사항에 대해 설명합니다.

공급자 주의
.NET Framework Data Provider for SQL Server Microsoft SQL Server를 사용하는 중간 계층 애플리케이션에 권장됩니다.

MSDE(Microsoft Database Engine) 또는 SQL Server를 사용하는 단일 계층 애플리케이션에 권장됩니다.

.NET Framework Data Provider for OLE DB와 함께 SQL Server용 OLE DB 공급자(SQLOLEDB)를 사용하는 것이 좋습니다.
.NET Framework Data Provider for OLE DB SQL Server의 경우 이 공급자 대신 .NET Framework Data Provider for SQL Server를 사용하는 것이 좋습니다.

Microsoft Access 데이터베이스를 사용하는 단일 계층 애플리케이션에 권장됩니다. 중간 계층 애플리케이션에는 Access 데이터베이스를 사용하지 않는 것이 좋습니다.
.NET Framework Data Provider for ODBC ODBC 데이터 소스를 사용하는 중간 및 단일 계층 애플리케이션에 권장됩니다.
.NET Framework Data Provider for Oracle Oracle 데이터 소스를 사용하는 중간 및 단일 계층 애플리케이션에 권장됩니다.

EntityClient 공급자

EntityClient 공급자는 EDM(엔터티 데이터 모델)을 기반으로 데이터에 액세스하는 데 사용됩니다. EntityClient 공급자는 다른 .NET Framework 데이터 공급자와 달리 데이터 소스와 직접 상호 작용하지 않고 대신 Entity SQL을 사용하여 기본 데이터 공급자와 통신합니다. 자세한 내용은 Entity Framework용 EntityClient 공급자를 참조하세요.

참고 항목