Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ADO.NET es el modelo de acceso a datos integrado en .NET. Microsoft. Data.SqlClient implementa ese modelo para bases de datos compatibles con SQL Server y añade capacidades específicas de SQL Server.
La página de inicio de Microsoft. Data.SqlClient proporciona el mapa de características del controlador y la línea base de producción. Este artículo explica cómo encaja el controlador en ADO.NET.
Abstracciones ADO.NET y tipos SqlClient
ADO.NET define abstracciones independientes del proveedor en el System.Data.Common espacio de nombres. Microsoft. Data.SqlClient proporciona implementaciones concretas.
| Abstracción de ADO.NET | Tipo SqlClient | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Abre una conexión lógica a una base de datos. |
| DbCommand | SqlCommand | Ejecuta texto SQL o un procedimiento almacenado. |
| DbParameter | SqlParameter | Envía un valor escrito por separado del texto del comando. |
| DbDataReader | SqlDataReader | Transmite las filas de resultados desde el servidor. |
| DbTransaction | SqlTransaction | Agrupa los comandos en una sola transacción atómica. |
| DbDataAdapter | SqlDataAdapter | Rellena y actualiza objetos DataSet y DataTable desconectados. |
| DbBatch | SqlBatch | Envía varios comandos en un solo lote en los marcos de destino compatibles. |
Programar contra las abstracciones ADO.NET cuando una biblioteca debe soportar múltiples proveedores de bases de datos. Utiliza los tipos SqlClient cuando una aplicación se dirige a SQL Server y necesita funciones específicas de cada proveedor.
Acceso a datos conectados
El acceso conectado mantiene una conexión disponible mientras se ejecuta un comando y mientras la aplicación lee sus resultados.
Una petición común sigue a esta secuencia:
- Crea un
SqlConnectiona partir de una cadena de conexión. - Abrir la conexión.
- Crea una
SqlCommandy añade los valores deSqlParameter. - Ejecute el comando.
- Procesar un valor escalar, el número de filas afectadas o
SqlDataReader. - Deshazte del lector, el comando y la conexión.
Utiliza el acceso conectado para la mayoría de APIs web, servicios, trabajadores y aplicaciones de línea de comandos.
SqlDataReader procesa filas en flujo y suele usar menos memoria que cargar el resultado completo en un DataSet.
Abrir y liberar un SqlConnection para cada unidad de trabajo es el patrón habitual. La agrupación de conexiones reutiliza la conexión física subyacente. No mantengas una sola conexión global abierta durante toda la vida útil de una aplicación.
Acceso de datos desconectado
SqlDataAdaptertransfiere datos entre SQL Server y un archivo en memoria DataSet o DataTable. La aplicación puede cerrar la conexión mientras lee o modifica los datos en memoria y luego volver a conectarse para enviar actualizaciones.
Utiliza acceso desconectado cuando necesites:
- Vinculación de datos a
DataSetoDataTable. - Relaciones y restricciones en memoria.
- Ediciones offline que luego se reconcilian.
- Compatibilidad con una aplicación existente construida alrededor de DataAdapters.
Para nuevos servicios orientados a peticiones, empieza con SqlCommand y SqlDataReader a menos que necesites el modelo de objetos desconectados.
Características específicas de SQL Server
Microsoft. Data.SqlClient añade APIs y comportamientos de conexión que no forman parte del contrato ADO.NET independiente del proveedor:
- Devolución de autenticación y token de acceso de Microsoft Entra.
- TDS 8.0 con cifrado estricto y opciones de certificado de SQL Server.
- Enclaves siempre cifrados y seguros.
-
SqlBulkCopypara la carga de datos de alta velocidad. - Parámetros con valores de tabla.
- Tipos de datos de SQL Server, incluyendo JSON y tipos vectoriales.
- Lógica de reintento configurable.
- Diagnósticos, estadísticas y contadores de SQL Server.
- Grupo de disponibilidad y opciones de conexión por failover.
Usar estas funciones vincula ese código a Microsoft. Data.SqlClient. Mantén el código específico del proveedor detrás de un límite de acceso a los datos si el resto de la aplicación debe permanecer independiente del proveedor.
Vida útil del objeto y concurrencia
Elimina conexiones, comandos, lectores, transacciones y objetos de copia masiva rápidamente. Úsalo await using con código asincrónico cuando un tipo implementa IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader, y SqlTransaction no soportan el uso simultáneo desde múltiples hilos. Asigna a cada operación concurrente su propia conexión y confía en la agrupación de conexiones. Múltiples Conjuntos de Resultados Activos (MARS) permite más de un conjunto activo de resultados en una conexión, pero no hace que los objetos SqlClient sean seguros para hilos.
Paquetes y espacios de nombres
Instala el paquete Microsoft.Data.SqlClient NuGet e importa el espacio de nombres Microsoft.Data.SqlClient. El controlador se distribuye de forma independiente de .NET, por lo que sus calendarios de funcionalidades, lanzamiento y soporte difieren del tiempo de ejecución de .NET.
System.Data.SqlClient es el proveedor más antiguo. Usa Microsoft. Data.SqlClient para nuevos desarrollos. Para una aplicación existente, sigue Migrar de System.Data.SqlClient a Microsoft. Data.SqlClient.