Acababa de instalar Windows Server 2012 y SQL Server 2012, e intenté restaurar una base de datos desde un respaldo, obteniendo este error:
Leer másHerramienta para hacer pruebas y ejercicios de sentencias SQL en línea
Si no tienes un motor de base de datos a tu disposición y quieres correr algunas instrucciones de SQL, te recomiendo este sitio web:
Puedes seleccionar de distintos manejadores de bases de datos:
Después pones las instrucciones para crear tu tabla e insertar algunos registros de prueba y oprimes Build Schema
.
Una vez hecho lo anterior tendrás tu base de datos lista y con registros para probar, ahora del lado derecho teclea tu consulta y oprime Run SQL
:
Y podrás ver los resultados más abajo:
Excelente herramienta, puedes oprimir View Sample Fiddle
para que la aplicación genere una prueba como la que aparece en las imágenes.
No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
Trabajando con una base de datos de SQL Server
similar a la siguiente:
En un proyecto de ASP.NET
tenía mi DAL
(archivo xsd) en el cual agregué un TableAdapter
con la siguiente consulta:
SELECT
Alumno.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno
Al tratar de utilizar los datos en una página ASPX
mediante un ObjectDataSource
, me aparecía este error:
No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
En inglés:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints
Nota: Esto ocurre normalmente en consultas con JOINS
. Antes de seguir las instrucciones que voy a dar, intenta borrar tu TableAdapter
y volverlo a crear, puede ser que hayas modificado el tamaño de algún campo en la base de datos y no lo hayas ajustado en el xsd. Si no se arregló, continúa leyendo.
Investigando, encontré, que si quito la llave Alumno.IdAlumno
de la consulta se soluciona el problema, sin embargo no lo puedo hacer porque en este caso específico necesito la llave para pasarla como parámetro en un vínculo a otra página.
Como podrás ver, la llave IdAlumno
está tanto en la tabla Alumno
(llave primaria), como en Tarea
(llave foránea). Para solucionar el problema, utiliza en tu consulta la llave foránea (Tarea.IdAlumno) en vez de la primaria (Alumno.IdAlumno), las dos llevan siempre el mismo valor, y solucionarás el problema, así:
SELECT
Tarea.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno
Cómo darle formato a una fecha en SQL Server
Para desplegar una fecha mostrando el formato utilizado en Latinoamérica, utiliza la siguiente instrucción:
SELECT CONVERT(VARCHAR(10), TuTabla.Fecha, 103) FROM TuTabla
La fecha será desplegada en el formato dd/mm/aaaa, por ejemplo 15/06/2010 para el 15 de junio de 2010.
Puedes encontrar la lista completa de los formatos en esta página.
Exclusive access could not be obtained because the database is in use
Intentas restaurar una base de datos desde un backup utilizando Microsoft SQL Server Management Studio y te aparece el siguiente error:
Restore failed for Server 'TuServidor'. (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.Smo)
Lo que ocurre es que la base de datos está abierta por otro proceso y debes cerrar todas las conexiones. Para hacerlo, abre una ventana de Query y coloca lo siguiente:
use master
go
alter database nombre_de_tu_base_de_datos set single_user with rollback immediate
alter database nombre_de_tu_base_de_datos set multi_user
Este script fue tomado de un excelente post escrito por Sergio Tarrillo, en el cual puedes encontrar soluciones adicionales para este problema.