Share via


Solucionar problemas relacionados con el proyecto de base de datos, la compilación y la implementación

Actualización: noviembre 2007

Al crear, modificar, generar o implementar proyectos de base de datos, podrían surgir los problemas siguientes:

  • Errores al crear proyectos de base de datos

  • Errores al intentar utilizar una base de datos de SQL Server 2000 para la validación en tiempo de diseño

  • Errores en objetos de base de datos

  • Utilizar las nuevas palabras reservadas de Microsoft SQL Server 2005

  • Diferencias de la generación en la línea de comandos

  • Claves simétricas, claves asimétricas y certificados

  • Dependencias y secuencias de comandos de actualización

  • Errores al agregarse como usuario

  • Los identificadores entrecomillados pueden causar problemas al volver a cargar el proyecto

  • El estado interno de la base de datos no es coherente con su contenido

  • Búsqueda de texto completo

  • Objetos SQLCLR

  • Deshacer cambios pendientes

  • No se encuentra un usuario o grupo de Windows NT

  • Duplicar nombres de objetos y excluir archivos

  • CREATE ASSEMBLY no permite hacer referencias a archivos

  • Problemas de conversión de SQL Server 2000 a SQL Server 2005

  • Nombres que incluyen la base de datos y el servidor

  • Compatibilidad con propiedades extendidas

  • Rendimiento del esquema de importación de base de datos

  • Navegación de los errores de compilación

  • Proyectos de base de datos y la configuración TRUSTWORTHY

  • Servidores vinculados y secuencias de comandos de importación

  • Errores de sintaxis al utilizar referencias de bases de datos cruzadas

  • Índices XML con propiedades extendidas

  • Problemas con los permisos de Team Foundation Build

  • Advertencias de tokens inesperadas durante la generación

  • Error al realizar una implementación de línea de comandos desde un equipo basado en x64 en un servidor de bases de datos remoto

Errores al crear proyectos de base de datos

Aparecerá un mensaje de error si crea un proyecto de base de datos y no tiene los permisos necesarios para crear una base de datos en la instancia local de Microsoft SQL Server que se utiliza para la validación en tiempo de diseño.

Nota:

Utilice una herramienta como SQL Server Management Studio para configurar los permisos para la instancia de SQL Server. Si no puede iniciar sesión con credenciales administrativas, quizás deba solicitar al administrador que le conceda permisos para crear bases de datos en SQL Server.

Debe asegurarse de que el nombre de la instancia especificado para la base de datos de validación en tiempo de diseño es correcto. Para obtener más información, vea Cómo: Especificar la instancia local de SQL Server para la validación en tiempo de diseño.

Si ejecuta Visual Studio sin permisos administrativos, podría aparecer el error "Se ha denegado el permiso CREATE DATABASE en la base de datos 'master'". Para corregir este error, un usuario con permisos de administrador del sistema debe ejecutar la secuencia de comandos siguiente en la base de datos de validación en tiempo de diseño:

USE master
GO
GRANT EXECUTE ON sp_detach_db TO public
GO

Errores al intentar utilizar una base de datos de SQL Server 2000 para la validación en tiempo de diseño

Se producirá un error si cambia la base de datos que se utiliza para la validación en tiempo de diseño por una instancia de SQL Server 2000 y después intenta crear o modificar un proyecto de base de datos. El mensaje de error será similar a "Sintaxis incorrecta cerca de 'ENABLE BROKER'". La base de datos de validación en tiempo de diseño utiliza características de SQL Server 2005.

Nota:

Debe especificar una instancia válida de una base de datos de SQL Server 2005 como base de datos de validación en tiempo de diseño. Para obtener más información, vea Cómo: Especificar la instancia local de SQL Server para la validación en tiempo de diseño.

Errores en objetos de base de datos

Cuando un objeto de base de datos contiene uno o más errores de sintaxis, el icono de esa base de datos incluye un símbolo de error ("!" de color rojo) y en la ventana Lista de errores aparecen los mensajes de error asociados. Para los errores devueltos por la instancia local de SQL Server durante la validación en tiempo de diseño se indica el número de fila exacto. Sin embargo, como número de columna siempre aparece la columna uno. Tanto la fila como la columna son correctas para los errores de sintaxis SQL.

Nota:

El mensaje de error que aparece en la ventana Lista de errores debería proporcionar información acerca de lo que puede hacer para resolver el error. Después de resolver el error y guardar el objeto de base de datos, su icono recupera el estado normal.

Utilizar las nuevas palabras reservadas de Microsoft SQL Server 2005

Las nuevas palabras clave reservadas de SQL Server 2005 son: EXTERNAL, PIVOT, REVERT, TABLESAMPLE y UNPIVOT. Aparecerá un error en la ventana Resultados si utiliza estas palabras clave reservadas como nombres de objetos de esquema en un proyecto de base de datos destinado a SQL Server 2000.

Nota:

Para resolver esta restricción, puede incluir los nombres de los objetos de esquema entre comillas. Por ejemplo, puede utilizar "CREATE TABLE [External] (c1 INT)".

Diferencias de la generación en la línea de comandos

Si realiza una generación en la línea de comandos cuando tiene el proyecto abierto en Visual Studio, puede que no reciba todos los errores de compilación que recibe al realizar la generación en la interfaz de usuario.

Nota:

Para solucionar este problema, cierre el proyecto de base de datos en Visual Studio antes de realizar una generación desde la línea de comandos.

Claves simétricas, claves asimétricas y certificados

En Visual Studio Team System Database, no se pueden crear claves simétricas, claves asimétricas o certificados como objetos de base de datos. Al importar un esquema de base de datos, los comentarios de marcador de posición se colocan en la secuencia de comandos anterior a la implementación con los nombres de las claves y certificados. Debe cambiar la secuencia de comandos anterior a la implementación para crear esos objetos. De igual forma, cuando se comparan esquemas de base de datos, la secuencia de comandos de actualización de esquema no contiene los comandos Transact-SQL (T-SQL) necesarios para crear las claves simétricas, las claves asimétricas o los certificados que no se encuentran. Debe exportar la secuencia de comandos de actualización al editor y agregar instrucciones para crear esos objetos.

Dependencias y secuencias de comandos de actualización

Para generar los objetos en el orden correcto en una secuencia de comandos de actualización, Comparación de esquemas examina las dependencias de objeto. Por ejemplo, si una vista depende de una tabla, la tabla se debe crear antes que la vista. Si el objeto que depende del segundo objeto no tiene un nombre completo que incluya el esquema, quizás no se pueda identificar la dependencia y la secuencia de comandos de actualización o de creación incluiría las instrucciones en un orden incorrecto. Esta discrepancia puede producir errores al actualizar una base de datos de destino para que coincida con una base de datos de origen o al implementar los cambios en una base de datos. Este problema también se aplica a los scripts de compilación de base de datos.

Nota:

Para evitarlo, asegúrese de que incluye el esquema en los nombres de los objetos que participen en relaciones de dependencia. En el ejemplo siguiente, podrá estar seguro de que la dependencia se identificará correctamente si cambia el final de la instrucción para que haga referencia a [dbo].[KeysTable] en lugar de KeysTable:

CREATE VIEW [NewUser].[ViewReferencingScalarFunction] AS SELECT Column2, dbo.SimpleMultiplyParamByTwo(PK_Column) AS [Function] FROM KeysTable

Errores al agregarse como usuario

Si es miembro de la función de administrador del sistema e intenta agregarse como usuario, aparecerá el siguiente error: "El inicio de sesión ya tiene una cuenta con otro nombre de usuario.". Este error se produce porque es el propietario de la base de datos de validación en tiempo de diseño, lo que significa que también es el usuario dbo de esa base de datos. Por tanto, no se puede agregar de nuevo como usuario de la base de datos.

Los identificadores entrecomillados pueden causar problemas al volver a cargar el proyecto

Aparecerán errores cuando guarde objetos o cargue una base de datos que contiene identificadores entrecomillados si la casilla SET QUOTED_IDENTIFIER está desactivada en las propiedades de la base de datos. Esta situación podría darse si importa un esquema de base de datos desde una base de datos que utiliza identificadores entrecomillados.

Nota:

Para evitar el problema, tiene dos opciones. Puede modificar las definiciones de objeto para que utilicen corchetes en lugar de comillas. Por ejemplo, puede cambiar "Mi Tabla" a [Mi Tabla]. Como alternativa, puede abrir el menú Proyecto, hacer clic en Propiedades deProyectoBaseDeDatos y en la ficha Propiedades de la base de datos, y activar la casilla SET QUOTED_IDENTIFIER.

El estado interno de la base de datos no es coherente con su contenido

Puede aparecer el siguiente error al trabajar con Database Edition: "El estado interno del proyecto de base de datos es incoherente con su contenido. Descargue el proyecto y vuelva a cargarlo para resolver el problema.". Este error indica que, de algún modo, el proyecto, que mantiene una lista de los archivos que cree que contiene, ya no está sincronizado con el estado de los archivos. La razón más común por la cual podría producirse este error es que se elimine del disco uno de los archivos del proyecto cuando el proyecto de base de datos no está abierto. El error también puede producirse si hay problemas al importar un esquema de base de datos.

Nota:

Para evitarlo, debe descargar y volver a cargar el proyecto de base de datos. Para ello, haga clic en el mismo en el Explorador de soluciones. Abra el menú Proyecto y haga clic en Descargar el proyecto. Una vez descargado, abra el menú Proyecto y haga clic en Volver a cargar el proyecto.

Búsqueda de texto completo

Búsqueda de texto completo en la base de datos de validación en tiempo de diseño

Si desactiva la búsqueda de texto completo en la base de datos de validación en tiempo de diseño e importa un esquema de una base de datos que tiene objetos con índices de texto completo, los objetos se importarán, pero en la ventana Lista de errores aparecerán errores para aquellos objetos que utilicen índices de texto completo. Verá los mismos errores si, después de importar los objetos, desactiva la búsqueda de texto completo en la base de datos de validación en tiempo de diseño.

Nota:

Para evitar el problema, debe activar la búsqueda de texto completo en la base de datos de validación en tiempo de diseño. Para obtener más información, vea "Búsqueda de texto" en el sitio web de Microsoft.

Acciones de sp_fulltext_table en definiciones de índice de texto completo

Sólo se permite la acción CREATE en la definición del índice de texto completo. Si desea realizar una acción como ACTIVATE, debe hacerlo en la secuencia de comandos posterior a la implementación para la base de datos. Si agrega otras acciones, aparecerá el siguiente error: "El lote principal no puede tener una instrucción de lenguaje de manipulación de datos (DML) de nivel superior. Quite esa instrucción e intente de nuevo la operación.".

Nota:

Para solucionar el problema, debe pasar la instrucción sp_fulltext_table a la secuencia de comandos posterior a la implementación o a una secuencia de comandos incluida en la secuencia de comandos posterior a la implementación. Para obtener más información acerca de las secuencias de comandos posteriores a la implementación, vea Cómo: Especificar scripts anteriores o posteriores a la implementación.

Objetos SQLCLR

De forma predeterminada, la integración con SQLCLR está deshabilitada en Microsoft SQL Server 2005. Si importa un esquema de una base de datos que tiene objetos SQLCLR y la integración con SQLCLR está deshabilitada en la base de datos de validación en tiempo de diseño, no aparecerán errores en la ventana Lista de errores, Sin embargo, se producirán errores cuando intente ejecutar dichos objetos.

Nota:

Para evitar el problema, debe ejecutar el editor de Transact-SQL en Database Edition o usar una herramienta como SQL Server Management Studio y conectarse al servidor como administrador del sistema. A continuación, en una ventana de consulta, debe ejecutar lo siguiente:

exec sp_configure 'clr enabled', 1
reconfigure

Deshacer cambios pendientes

La Vista de esquema no se actualiza automáticamente tras usar el comando Deshacer cambios pendientes del sistema de control de versiones. Por ejemplo, si cambia el nombre de una tabla o una columna y, a continuación, deshace esos cambios, el mensaje "Cambio en un archivo externo, se debe volver a sincronizar" aparecerá en Vista de esquema.

Nota:

Para solucionar el problema, debe hacer clic en Sincronizar en la barra de herramientas de la Vista de esquema.

No se encuentra un usuario o grupo de Windows NT

Si el proyecto de base de datos hace referencia a un nombre de inicio de sesión que no está disponible, se muestra el error "No se encuentra el usuario o grupo de Windows NT 'NombreDominio\NombreUsuario'. Compruebe el nombre". Este problema puede surgir, por ejemplo, al trabajar en un equipo que pertenece a un dominio distinto del de la base de datos cuyo esquema se importó. Esta situación suele producirse al trabajar en casa en un proyecto de base de datos creado en otro lugar. En estas circunstancias no podrá generar ni implementar el proyecto de base de datos.

Nota:

No hay ninguna solución para este problema. Sólo puede generar e implementar un proyecto de base de datos si las cuentas de inicio de sesión a las que se hace referencia son válidas.

Duplicar nombres de objetos y excluir archivos

Si tiene nombres de objeto duplicados en el proyecto de base de datos (por ejemplo, dos tablas denominadas Orders), aparecerá un error en la ventana Lista de errores. Aunque resuelva el problema excluyendo el archivo que contiene la definición de uno de los objetos, el mensaje de error no desaparecerá inmediatamente.

Nota:

Para solucionarlo, puede hacer clic en Actualizar o editar el archivo que contiene la definición del objeto, cambiar el nombre del objeto y guardar el archivo.

CREATE ASSEMBLY no permite hacer referencias a archivos

Puede agregar un ensamblado de CLR a una instrucción Transact-SQL (T-SQL) CREATE ASSEMBLY incluyendo el código binario en la instrucción o especificando una ruta de acceso de archivo a un ensamblado. Database Edition no admite la última opción. Si intenta usar esta sintaxis, aparecerá el siguiente error: La instrucción CREATE ASSEMBLY sólo puede tener elementos binarios en la cláusula FROM.

Nota:

No hay ninguna solución para este problema.

Problemas de conversión de SQL Server 2000 a SQL Server 2005

Al convertir un proyecto de base de datos de SQL Server 2000 a SQL Server 2005, los menús contextuales para objetos de SQL Server 2005 no aparecen en la Vista de esquema.

Nota:

Para solucionar el problema, cierre y vuelva a abrir el proyecto de base de datos después de convertirlo a SQL Server 2005.

Nombres completos de base de datos y de servidor

Al crear un objeto en Team Edition for Database Professionals, el objeto se designa con la nomenclatura [esquema].[objeto].[secundario]. Si desea hacer referencia a un objeto de otra base de datos o de otro servidor, puede incluir el nombre de la base de datos y del servidor de la manera siguiente: [servidor].[base de datos].[esquema].[objeto].[elemento secundario]. Si crea un procedimiento almacenado o una vista que hace referencia a un objeto que requiere un nombre completo del servidor o la base de datos, aparecerá una advertencia.

Nota:

Para resolver la advertencia, debe definir una referencia de bases de datos cruzadas. Para obtener más información sobre las referencias de bases de datos cruzadas, vea Introducción a las referencias entre bases de datos y Cómo: Crear referencias entre bases de datos.

Nota importante:

La implementación no finalizará correctamente si el proyecto contiene advertencias sin resolver sobre nombres completos de base de datos o de servidor y se activa la casilla Tratar advertencias como errores en la ficha Generar de las propiedades del proyecto de base de datos. Este error se debe a que los nombres completos de base de datos o de servidor generan advertencias. Debe desactivar la casilla Tratar advertencias como errores si usa nombres completos de base de datos o de servidor.

Compatibilidad con propiedades extendidas

Esta versión de Database Edition no admite propiedades extendidas de grupos de archivos, nombres de archivos y restricciones de funciones. Si importa un esquema o una secuencia de comandos de base de datos, se omitirán las propiedades extendidas de dichos objetos.

Además, las propiedades extendidas que almacenen un valor de tipo TinyInt, SmallInt, UniqueIdentifier o Bit se omitirán y se colocarán en el archivo ScriptsIgnoredOnImport.sql.

Nota:

Para solucionar este problema, debe crear manualmente las propiedades extendidas en una secuencia de comandos posterior a la implementación. Para obtener más información, vea Cómo: Especificar scripts anteriores o posteriores a la implementación.

Rendimiento del esquema de importación de base de datos

Si importa un esquema de base de datos mientras la ventana Editor de la lista de pruebas o Vista de pruebas está abierta, la operación de importación tardará mucho más tiempo en ejecutarse. Esta ejecución lenta se producirá en el Asistente para nuevo proyecto de base de datos (si decidió importar un esquema de base de datos) y durante la operación de importación del esquema de base de datos. El problema se produce aunque cierre las ventanas Editor de la lista de pruebas y Vista de pruebas antes de importar el esquema de base de datos.

Nota:

Para solucionar este problema, debe cerrar las ventanas Editor de la lista de pruebas y Vista de pruebas, apagar y reiniciar Visual Studio y, a continuación, importar el esquema de base de datos. Para los esquemas pequeños, tal vez no sea necesario realizar estos pasos. Con la base de datos de ejemplo AdventureWorks, la operación de esquema de importación tardó 27 segundos sin tener abierta la ventana Editor de la lista de pruebas y 48 segundos con ella abierta.

Si se produce un error en la implementación, no es posible corregir el error actualizando el script de compilación. Debe corregir el archivo de código fuente que se utiliza para generar ese script de compilación. Si hace doble clic en un error de implementación en la ventana Lista de errores, el script de compilación aparecerá en el editor y se mostrará la línea que produjo el error.

Nota:

Para solucionar este problema, debe examinar el script de compilación para determinar la causa del error, pero después debe modificar el archivo de código fuente en el proyecto de base de datos que contiene el error. Por ejemplo, si la secuencia de comandos posterior a la implementación Permisos.sql contiene un error, debe modificar Permisos.sql en lugar del script de compilación.

Proyectos de base de datos y la configuración TRUSTWORTHY

Debe tener permisos sysadmin para habilitar la configuración TRUSTWORTHY para un proyecto de base de datos o para abrir un proyecto de base de datos que tenga habilitada la configuración TRUSTWORTHY.

Nota:

Para solucionar este problema, si la configuración TRUSTWORTHY no debe estar habilitada, pida al administrador que deshabilite la configuración para el proyecto de base de datos. Si la configuración TRUSTWORTHY debe estar habilitada, todos los programadores que trabajan en el proyecto de base de datos deben disponer de permisos sysadmin para esa base de datos. Si cada programador trabaja en un entorno de desarrollo aislado, cada uno de ellos tendrá una copia privada de la base de datos y todos ellos podrán agregarse sin problemas a la función sysadmin para esa base de datos.

Servidores vinculados y secuencias de comandos de importación

Puede aparecer un error cuando implemente un proyecto de base de datos si ha importado varias secuencias de comandos en dicho proyecto. Esta situación se puede producir si el mismo servidor vinculado se ha definido varias veces entre esas secuencias de comandos.

Nota:

Para evitar este problema, debe agregar la siguiente secuencia de T-SQL delante de cada llamada a sp_addlinkedserver en la secuencia de comandos LinkedServers.sql anterior a la implementación:

IF NOT EXISTS (SELECT * FROM master.dbo.sysservers WHERE srvname = N'<serverName>')

Errores de sintaxis al utilizar referencias de bases de datos cruzadas

Es posible que se produzcan uno o más errores de sintaxis al guardar una definición de objeto que contenga una referencia a un objeto de otra base de datos. Por ejemplo, puede agregar una referencia al proyecto de base de datos, definir variables denominadas RefServer y RefDatabase, y asignarles valores. A continuación, puede definir una vista tal como se indica:

CREATE VIEW [dbo].[MyView]
AS
SELECT * FROM $(RefServer).$(RefDatabase).dbo.TableName

Al guardar esta definición, puede recibir uno o más mensajes de error que indican que la sintaxis es incorrecta. Los mensajes de error pueden hacer referencia al nombre de la base de datos de validación en tiempo de diseño, lo que puede llevar a confusión.

Nota:

Para resolver este problema, debe incluir los nombres de las variables entre paréntesis. Para corregir este ejemplo, cámbielo como se muestra a continuación:

CREATE VIEW [dbo].[MyView]
AS
SELECT * FROM [$(RefServer)].[$(RefDatabase)].dbo.TableName

Índices XML con propiedades extendidas

Puede aparecer uno o más errores de sintaxis al guardar una definición de objeto para un índice XML que contiene las definiciones de una o más propiedades extendidas. Este tipo de error se produce porque SQL Server 2005 no quita las propiedades extendidas cuando un índice XML se coloca y se vuelve a crear. Cuando se da esta situación, puede aparecer el error siguiente: "TSD4001: No se puede agregar la propiedad. La propiedad 'ExtendedPropertyName' ya existe para 'XMLIndexName'. (Error de SQL = 15233)".

Nota:

Para resolver este problema, debe mover la definición de la propiedad o propiedades extendidas al script posterior a la implementación y agregar inmediatamente las instrucciones siguientes antes de la definición:

IF NOT EXISTS (SELECT * FROM fn_listextendedproperty('ExtendedPropertyName', 'SCHEMA', N'SchemaName', 'TABLE', N'TableName', 'INDEX', N'XMLIndexName')

Problemas con los permisos de Team Foundation Build

Es posible que aparezcan mensajes de error sobre los permisos cuando genere e implemente su proyecto de base de datos con Team Foundation Build. De forma predeterminada, la cuenta de servicio de Team Foundation Build utiliza la cuenta de servicio de red. La cuenta de servicio de red no tiene los permisos necesarios para la instancia de SQL Server del equipo de compilación.

Nota:

Para resolver este problema, debe conceder permisos adicionales a la cuenta de servicio de red o cambiar la cuenta de servicio bajo la que se ejecuta Team Foundation Build por una cuenta que tenga los permisos necesarios. Para obtener más información, vea Permisos necesarios en Database Edition.

Advertencias de tokens inesperadas durante la generación

Pueden aparecer advertencias de tokens inesperadas al generar el proyecto de base de datos mediante MSBuild. Si invalida DefaultDataPath y no especifica dos caracteres de barra diagonal inversa finales, la secuencia \" se interpreta como un carácter de escape para las comillas. Recibirá advertencias al generar y puede que el script de compilación generado quede incompleto.

Nota:

Para solucionar este problema, debe especificar dos barras diagonales inversas al final de la ruta de acceso. Para obtener más información, vea Descripción general de la compilación e implementación de bases de datos.

Error al realizar una implementación de línea de comandos desde un equipo basado en x64 en un servidor de bases de datos remoto

Si no especifica explícitamente una conexión de destino para el proyecto de base de datos, los valores de ubicación del archivo y grupo de archivos se establecen basándose en la estructura de directorios del equipo local basado en x64. Se producirá un error de implementación a menos que el servidor de bases de datos remoto también ejecute un sistema operativo x64 y una versión de 32 bits de SQL Server.

Nota:

Para resolver este problema, debe especificar explícitamente una conexión a la base de datos de destino en las propiedades del proyecto de base de datos antes de implementar la base de datos. Para obtener más información, vea Cómo: Configurar proyectos de base de datos para la compilación e implementación.

Vea también

Tareas

Cómo: Modificar objetos de base de datos

Cómo: Ver diferencias de datos

Conceptos

Introducción a la terminología de Database Edition

Otros recursos

Cambiar el nombre de objetos de base de datos