Herramienta 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:

http://www.sqlfiddle.com/

Puedes seleccionar de distintos manejadores de bases de datos:

image

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:

image

Y podrás ver los resultados más abajo:

image

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:

der

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.