OLEDB es mucho más rápido que el SQLClient, EXCEPTO cuando se accede a través de ADO.NET. Los controladores para OLEDB están escritos en código nativo no administrado; sin embargo, cuando accede a estos controladores a través de ADO.NET, debe pasar por varias capas (incluyendo una capa de abstracción y una capa de interoperabilidad COM). La capa de abstracción se ocupa de la administración de recursos, como la administración de identificadores de memoria para garantizar que la recolección de basura se realice correctamente, el cambio de tipos de datos y parámetros a tipos .NET y la conversión del búfer de oledb a enlaces de filas y columnas. La capa de interoperabilidad COM se encarga de coordinar el paso de mensajes de .NET a COM y viceversa, incluyendo el bloqueo/desbloqueo/conversión de punteros.
No escuche a nadie que haga acusaciones falsas sobre el rendimiento de OleDB sin entender cómo lo probaron y qué entorno usaron (código administrado frente a código administrado). Lo único que desacelera OleDB es la cantidad de plomería que se requiere para que el código nativo funcione bien con el código administrado. También tenga en cuenta que la biblioteca SqlClient .NET tiene su propia instalación de fontanería y NO ES UNA biblioteca NATIVE .NET como la mayoría de la gente cree que es. Las bibliotecas SqlClient en .NET utilizan las clases SNINativeMethodWrapper y SNIPacket, que son contenedores que recopilan datos entre código no administrado (sqlncli.dll) y código .NET administrado. Esta es la verdad no documentada y la razón por la cual .NET SqlClient nunca podrá realizar el OleDB cuando utilice OleDB en código nativo no administrado.
En resumen, si está utilizando el 100% de código administrado, obtendrá un mejor rendimiento del System.data.SqlClient. Si tiene un entorno mixto, obtendrá un rendimiento mucho mejor si habla directamente con OleDB o con sqlncli.dll (SQL2005) o sqlncli10.dll (SQL 2008). Tenga en cuenta que tanto OleDB como ODBC están siendo actualizados por Microsoft y los últimos controladores OleDB HACEN hablar con las últimas librerías de SQL nativas no administradas. Microsoft recomienda usar OleDB en aplicaciones no administradas cuando se requiere un alto rendimiento.
Consulte "Libros en pantalla de SQL Server 2008 \ Motor de base de datos \ Desarrollo \ Guía del desarrollador \ Programación de SQL Server 2008 Native Client \ SQL Server 2008 Native Client (OLE DB)" para obtener más información.
Vale la pena observar ahora mis dos primeras frases que Microsoft está desaprobando Ole a favor de Odbc –