Compartir a través de


Solucionar problemas de acceso a datos en Visual Studio

Actualización: noviembre 2007

Este tema enumera algunos problemas comunes que surgen cuando se trabaja con el acceso a datos en Visual Studio.

No se puede obtener acceso a una base de datos en tiempo de ejecución a la que sí se puede obtener acceso en tiempo de diseño

Seguramente, esta situación se debe a que se ha pasado un nombre de usuario y una contraseña en tiempo de ejecución a los que se deniega el acceso a la base de datos. La solución depende de los métodos de autenticación y autorización utilizados en la base de datos, así como de la cadena de conexión.

Una posible causa de este problema es:

  • Seleccionar la opción Utilice un nombre de usuario y contraseña específicos y no seleccionar la opción Permitir guardar la contraseña cuando se rellena Agregar/Modificar conexión (Cuadro de diálogo, General). En este escenario, se le pide un nombre de usuario y una contraseña cuando intenta conectarse a un origen de datos en tiempo de diseño. Para la conectividad en tiempo de ejecución, debe incorporar funcionalidad a la aplicación para pasar el nombre de usuario y la contraseña correctos al origen de datos.

Aspectos que se deben comprobar:

  • Compruebe que el nombre de usuario y la contraseña que utiliza la aplicación tienen los permisos correctos para obtener acceso al origen de datos.

  • Compruebe que el usuario tiene la configuración de permisos correcta en la base de datos.

  • Compruebe que hay una conexión de red entre el equipo donde se ejecuta la aplicación y el origen de datos.

Faltan parámetros de salida o son incorrectos al ejecutar un comando de SQL

Seguramente, esta situación se debe a una configuración incorrecta de la propiedad Directiondel parámetro. La propiedad Direction del parámetro se establece en un valor definido en la enumeración ParameterDirection.

  • Compruebe que la propiedad Direction del parámetro está definida con un valor que puede recibir datos (Output para parámetros de salida).

  • Compruebe que el tipo de datos del parámetro es el mismo que el tipo de datos del valor devuelto esperado.

    Nota:

    Los parámetros de salida se devuelven al final de la secuencia de datos; por tanto, si está usando el objeto DataReader (por ejemplo, SqlDataReader), debe cerrarlo o leer hasta el final de los datos antes de que se vean estos parámetros.

Para obtener más información sobre parámetros de salida no devueltos, así como un ejemplo de código, busque Q308051 en el sitio del Servicio de soporte técnico de Microsoft (https://support.microsoft.com).

Obtener el error 'El proveedor .NET Data SQL Provider (System.Data.SqlClient) requiere tener instalada la versión 2.6 o posteriores de Microsoft Data Access Components (MDAC)'

Microsoft Kit de desarrollo de software de Windows (SDK) y el paquete redistribuible de .NET Framework no incluyen la instalación de MDAC. Todas las aplicaciones .NET Framework que utilizan funcionalidad de acceso a datos requieren MDAC 2.6 o posterior (se recomienda MDAC 2.8 SP1). La última versión de MDAC está disponible para descargarla en el sitio Web de Microsoft (https://www.microsoft.com/spanish).

Puesto que Visual Studio instala MDAC de manera predeterminada, es muy probable que se produzca este error cuando se implementan aplicaciones en un equipo que no tiene Visual Studio instalado.

Cuando implemente la aplicación, puede hacer que el programa de instalación compruebe la versión de MDAC en el equipo. Para obtener más información, vea Cómo: Agregar una condición de inicio para Microsoft Data Access Components.

Obtener una excepción inesperada cuando se intenta confirmar o deshacer una transacción

Cuando un error en el origen de datos da lugar a que se deshaga una transacción inmediatamente, puede producirse alguno de los siguientes errores en la aplicación:

  • "La solicitud COMMIT TRANSACTION no tiene BEGIN TRANSACTION correspondiente"

  • "La solicitud ROLLBACK TRANSACTION no tiene BEGIN TRANSACTION correspondiente"

Aunque este comportamiento es por diseño, es siempre mejor llamar a métodos que tengan acceso a orígenes de datos externos (como Commit y Rollback) desde una instrucción Try...Catch. Para obtener más información, vea Cómo: Utilizar el bloque Try/Catch para detectar excepciones (Visual Basic) o try-catch (Referencia de C#).

Obtener una excepción InvalidOperationException cuando se intentan quitar tablas de un conjunto de datos

Cuando un conjunto de datos está enlazado a un objeto XmlDataDocument, la llamada al método Clear inicia la siguiente excepción:

System.InvalidOperationException: no se pueden agregar o eliminar tablas de DataSet una vez que está asignada a un documento XML cargado.

Para borrar los datos de un conjunto de datos enlazado a un objeto XmlDataDocument, debe navegar por la tabla y quitar los objetos DataRow individuales. Para obtener más información sobre cómo quitar filas de datos de una tabla de datos, vea Cómo: Eliminar filas en un DataTable y DataRowCollection.RemoveAt (Método).

Las etiquetas de título no son correctas al arrastrar elementos de la ventana Orígenes de datos

Al arrastrar elementos de la ventana Orígenes de datos, los nombres de columna se modifican basándose en una expresión regular predeterminada. Si el nombre de columna contiene un carácter en minúscula seguido por un carácter en mayúscula, se agrega un espacio para dividir las dos palabras. Además, cualquier subrayado en el nombre de columna se reemplaza con espacios. Para obtener más información sobre este comportamiento, vea Cómo: Personalizar el modo en que Visual Studio crea los títulos de controles enlazados a datos.

Los procesos de búsqueda y presentación de datos parecen lentos

Si el proyecto utiliza un BindingSource (Componente) intente establecer RaiseListChangedEvents en False. De esta forma, se evita que aparezcan los eventos ListChanged en la lista y se puede incrementar el rendimiento de conjuntos de datos grandes.

Tras la instalación en Windows 2000, la aplicación emite una advertencia de que se requiere MDAC 2.8

Cualquier aplicación que haga referencia al espacio de nombres System.Data requiere Microsoft Data Access Components (MDAC) versión 2.8 o posterior. En la mayoría de los casos, el archivo ya se encuentra instalado como parte del sistema operativo. En equipos que ejecutan Windows 2000 con Service Pack 3, o versiones anteriores, puede que tenga que instalar el componente con su aplicación. Puede hacer esto agregando el componente al paquete del programa previo y descargando el archivo de Microsoft durante la instalación. Para obtener más información, vea Requisitos previos de implementación (Visual Studio).

Los valores generados por la base de datos en inserciones o actualizaciones devuelven valores NULL para las clases de LINQ to SQL

LINQ to SQL procesa automáticamente los valores generados por la base de datos para columnas identidad (incremento automático), rowguidcol (GUID generado por la base de datos) y columnas con marca de tiempo. Los valores generados por la base de datos de otros tipos de columna producirán inesperadamente un valor nulo. Para devolver los valores generados por la base de datos, debería establecer manualmente IsDbGenerated en true, y AutoSync en una de las siguientes opciones: Always, OnInsert o OnUpdate.

Vea también

Conceptos

Lo nuevo en datos

Información general sobre la presentación de datos

Otros recursos

Tutoriales sobre datos

Introducción a Data Access

Conectarse a datos en Visual Studio

Preparar la aplicación para recibir datos

Buscar datos en la aplicación

Mostrar datos en formularios en aplicaciones para Windows

Modificar datos en la aplicación

Validar datos

Guardar datos

LINQ to SQL