Solucionar problemas relacionados con el proyecto de base de datos, la generación y la implementación
Al crear, modificar, generar o implementar proyectos de base de datos, podrían surgir los problemas siguientes:
Errores en objetos de base de datos
Utilizar las nuevas palabras reservadas de Microsoft SQL Server 2005
Diferencias de la compilación en la línea de comandos
Dependencias y scripts de actualización
Los identificadores entre comillas pueden causar problemas al recargar el proyecto
El estado interno de la base de datos no es coherente con su contenido
Deshacer cambios pendientes
No se encuentra un usuario o grupo de Windows NT
Nombres de objetos duplicados y archivos excluidos
Nombres calificados con los nombres de la base de datos y del servidor
Rendimiento del esquema de importación de base de datos
Navegación de los errores de compilación
Errores de sintaxis al utilizar referencias de bases de datos cruzadas
Cambiar el nombre de proyectos y ensamblados de SQLCLR
Sintaxis no compatible con FULLTEXT STOPLIST
No se importa la cláusula SORT_IN_TEMPDB
Se pierde el estado de los identificadores entre comillas cuando se importan funciones con valores de tabla que contienen varias instrucciones
Algunos errores de proyecto no se borran después de compilar el proyecto
Sintaxis incorrecta del script posterior a la implementación
Errores en objetos de base de datos
Cuando un objeto de base de datos contiene uno o más errores de sintaxis, los mensajes de error asociados aparecen en la ventana Lista de errores.
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 y el error se quita de la ventana Lista de errores.
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 de salida si utiliza estas palabras clave reservadas como nombres de objetos de esquema en un proyecto de base de datos destinado a Microsoft SQL Server 2005 o SQL Server 2008.
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 compilació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 compilación desde la línea de comandos.
Dependencias y scripts de actualización
Para generar los objetos en el orden correcto en un script 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 calificado con el nombre de esquema, quizás no se pueda identificar la dependencia y el script de actualización o de creación incluiría las instrucciones en un orden incorrecto. Esta diferencia 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 generación de base de datos.
Nota
Para evitarlo, asegúrese de calificar con el nombre de esquema los nombres de los objetos que participan en relaciones de dependencia. En Visual Studio Premium y Visual Studio Ultimate, puede utilizar la refactorización de base de datos para completar los nombres de objeto. Para obtener más información, vea Completar los nombres de los objetos de base de datos. 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
Los identificadores entre comillas pueden causar problemas al recargar 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 Visual Studio Premium: "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 evitar este problema, puede hacer clic en Sincronizar en Vista de esquema. Si eso no funciona, puede descargar y recargar 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.
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 este 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 mensaje de error siguiente: "No se encuentra el usuario o grupo de Windows NT 'nombreDeDominio\nombreDeUsuario'. Compruebe el nombre". Este problema puede surgir 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
Puede crear el usuario, omitiendo la cláusula FOR LOGIN. Por ejemplo, puede usar lo siguiente: CREATE USER [Domain\someLogin]. El usuario se creará al implementar el proyecto de base de datos y se asociará con el inicio de sesión [Domain\someLogin], pero no necesita una referencia a ese inicio de sesión en su proyecto de base de datos.
Nombres de objetos duplicados y archivos excluidos
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 modificar el archivo que contiene la definición del objeto, cambiar el nombre del objeto y guardar el archivo.
Nombres calificados con los nombres de la base de datos y del servidor
Al crear un objeto en Visual Studio Premium, 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 calificado con el nombre del servidor o con el nombre de la base de datos, aparecerá una advertencia.
Nota
Para resolver esta 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 Uso de referencias en proyectos de base de datos y Cómo: Agregar referencias a proyectos de base de datos.
Importante |
---|
La implementación no finalizará correctamente si el proyecto contiene advertencias sin resolver sobre nombres calificados con el nombre de la base de datos o del 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 calificados con el nombre de la base de datos o del servidor generan advertencias. Si utiliza nombres calificados con el nombre de la base de datos o del servidor, debe desactivar la casilla Tratar advertencias como errores. |
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 esquemas más pequeños, puede que no sea necesario realizar estos pasos; para la base de datos de ejemplo AdventureWorks, la operación de importación de esquema duró 27 segundos con la ventana Editor de lista de pruebas cerrada y 48 segundos con la ventana Editor de lista de pruebas abierta.
Navegación de los errores de compilación
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 el script posterior a la implementación Script.PostDeployment.sql contiene un error, debe modificar Script.PostDeployment.sql en lugar del script de compilación.
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
Cambiar el nombre de proyectos y ensamblados de SQLCLR
No se puede implementar un proyecto de base de datos que contenga una referencia a un proyecto o ensamblado de SQLCLR si se le cambia el nombre pero no se actualiza la referencia.
Nota
Para corregir este problema, quite la referencia anterior y agregue una referencia al proyecto o ensamblado de SQLCLR con el nombre actualizado.
Sintaxis no compatible con FULLTEXT STOPLIST
Visual Studio Premium no modela la sintaxis FROM { [nombreDeBaseDeDatos.] nombreListaDePalabrasIrrelevantesDeOrigen } | SYSTEM STOPLIST ] de la instrucción CREATE FULLTEXT STOPLIST. Esa sintaxis se pasa por alto si se importa un objeto que la utiliza.
Nota
Para corregir este problema, debe agregar manualmente las palabras irrelevantes al script posterior a la implementación. Para obtener más información, vea Cómo: Especificar scripts anteriores o posteriores a la implementación.
No se importa la cláusula SORT_IN_TEMPDB
Visual Studio Premium no puede importar la cláusula SORT_IN_TEMPDB para los índices. Por ejemplo, podríamos tener el siguiente código:
CREATE TABLE [dbo].[IndexTable]
{
[Column1] [INT] NOT NULL
}
GO
CREATE NONCLUSTERED INDEX [SortInTempDbOn] ON [dbo].[IndexTable]
{
[Column1] ASC
}
WITH (SORT_IN_TEMPDB = ON)
GO
El índice se importa sin la cláusula SORT_IN_TEMPDB.
Nota
Para corregir este problema, es preciso corregir la definición del índice manualmente cada vez que se importan los cambios de la base de datos al proyecto.
Se pierde el estado de los identificadores entre comillas cuando se importan funciones con valores de tabla que contienen varias instrucciones
Se pueden importar funciones con valores de tabla que contienen varias instrucciones, pero el estado de la cadena de identificador entre comillas no se guarda en SQL Server. Al importar estas funciones, pueden aparecer errores porque la configuración predeterminada para Identificadores entre comillas es que estén activados.
Nota
Para corregir este problema, es preciso cambiar la configuración de Identificadores entre comillas para todas las funciones con valores de tabla que contengan varias instrucciones después de importar objetos y configuraciones, y después de escribir las actualizaciones de la base de datos en el proyecto.
Algunos errores de proyecto no se borran después de recompilar el proyecto
Algunos errores que se producen en el proyecto de base de datos no desaparecen después de haber corregido la causa del error, aunque se recompile el proyecto. Por ejemplo, si se elimina el archivo .sqlpermissions al que el proyecto hace referencia mediante el Explorador de Windows, se produce un error, como cabría esperar. Si se utiliza el Explorador de soluciones para quitar el archivo del su proyecto y a continuación, recompilarlo, el error permanece, aunque lo haya corregido.
Nota
Para corregir este problema, debe hacer clic en Reanalizar el proyecto en la barra de herramientas del Explorador de soluciones.
Sintaxis incorrecta del script posterior a la implementación
De forma predeterminada, el modo SQLCMD está inhabilitado en el editor de Transact-SQL de Visual Studio 2010. Se ha efectuado esta modificación porque Intellisense no está activo cuando el modo SQLCMD está habilitado. Cuando lleva a cabo la implementación, podría ver el siguiente error si ha incluido instrucciones en el script posterior a la implementación.
Incorrect syntax near ':'. C:\MySandbox\MySolution\MyProject\Scripts\Post-Deployment\Script.PostDeployment.sql
Nota
Para corregirlo, debe permitir al modo SQLCMD. Para habilitar el modo SQLCMD, haga clic en Modo SQLCMD en la barra de herramientas Editor de Transact-SQL.
Vea también
Tareas
Cómo: Modificar objetos de base de datos
Cómo: Comparar y sincronizar los datos de dos bases de datos
Conceptos
Cambiar el nombre de todas las referencias a un objeto de base de datos
Cambiar el nombre de todas las referencias a un objeto de base de datos
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Julio de 2010 |
Agregada una entrada para advertir a los usuarios de un cambio en el comportamiento predeterminado de Visual Studio 2010 que podría producir problemas en el script posterior a la implementación. |
Comentarios de los clientes. |