studio - cómo comparar/validar el esquema sql
la entidad de seguridad de base de datos posee esquema en la base de datos no se puede quitar (11)
Ahora puede usar mi SQL Admin Studio de forma gratuita para ejecutar una comparación de esquemas , comparar datos y sincronizar los cambios. Ya no es necesario descargar la clave de licencia aquí http://www.simego.com/Products/SQL-Admin-Studio
También funciona en SQL Azure.
[ACTUALIZACIÓN: Sí, soy el autor del programa anterior, ya que ahora es gratuito, solo quería compartirlo con la comunidad]
Estoy buscando una forma de validar el esquema de SQL en un DB de producción después de actualizar una versión de la aplicación. Si la aplicación no coincide con la versión del esquema DB, debe haber una forma de advertir al usuario y enumerar los cambios necesarios.
¿Existe una herramienta o un marco (para usar de forma programática) con funciones incorporadas para hacer eso? ¿O hay algún algoritmo simple para ejecutar esta comparación?
Actualización: Red gate enumera "desde $ 395". ¿Algo gratis? ¿O más infalible que solo mantener el número de versión?
¿Qué RDBMS es esto y cuán complejos son los posibles cambios?
Quizás esto solo sea cuestión de comparar recuentos de filas y recuentos de índices para cada tabla. Si tiene que preocuparse por las versiones de disparador y procedimiento almacenado, entonces necesita algo más industrial.
Haga una tabla y almacene su número de versión allí. Solo asegúrate de actualizarlo según sea necesario.
CREATE TABLE version (
version VARCHAR(255) NOT NULL
)
INSERT INTO version VALUES (''v1.0'');
Luego puede verificar que el número de versión almacenado en la base de datos coincida con el código de la aplicación durante la configuración de su aplicación o donde sea conveniente.
No mencionó qué RDMBS está utilizando: si las vistas de SCHEMA de INFORMACIÓN están disponibles en su RDBMS, y si puede hacer referencia a ambos esquemas desde el mismo host, puede consultar las vistas de SCHEMA DE INFORMACIÓN para identificar diferencias en: -tables - columns -column types -constraints (p. ej., claves primarias, restricciones exclusivas, claves externas, etc.)
He escrito un conjunto de consultas para este propósito en SQL Server para un trabajo anterior; funcionó bien para identificar diferencias. Muchas de las consultas usaban LEFT JOINs con IS NULL para verificar la ausencia de elementos esperados, otros comparaban cosas como tipos de columnas o nombres de restricciones.
Es un poco tedioso, pero es posible.
Puede hacerlo programáticamente mirando en el diccionario de datos (sys.objects, sys.columns, etc.) de ambas bases de datos y comparándolas. Sin embargo, también hay herramientas como Redgate SQL Compare Pro que hacen esto por usted. He especificado esto como parte de las herramientas para el control de calidad en los sistemas de almacenamiento de datos en algunas ocasiones, incluida la que estoy trabajando actualmente. En mi concierto actual esto no fue problema en absoluto, ya que los DBA aquí ya lo estaban usando.
La metodología básica para usar estas herramientas es mantener un script de referencia que construya la base de datos y la mantenga en control de versiones. Ejecute el script en una base de datos temporal y compárelo con su objetivo para ver las diferencias. También generará scripts de parche si así lo desea.
Hasta donde yo sé, no hay nada gratis que haga esto a menos que tengas ganas de escribir el tuyo. Redgate es lo suficientemente barato como para que también sea gratis. Incluso como una herramienta de control de calidad para demostrar que el DB de producción no está en la configuración que se suponía que era, le ahorrará su precio de compra después de un incidente.
Si está buscando una herramienta que pueda comparar dos bases de datos y le muestre la diferencia, Red Gate hace SQL Compare
Pruebe dbForge Data Compare para SQL Server . Puede comparar y sincronizar cualquier base de datos, incluso las más grandes. Rápido, fácil, siempre entrega un resultado correcto. Pruébalo en tu base de datos y comenta sobre el producto.
Podemos recomendarle una herramienta de comparación de SQL confiable que ofrezca una comparación y sincronización de datos de tabla 3 veces más rápida en sus bases de datos de SQL Server. Es dbForge Data Compare para SQL Server.
Ventajas principales:
- Comparación y sincronización más rápidas de grandes bases de datos
- Soporte de copias de seguridad nativas de SQL Server
- Asignación personalizada de tablas, columnas y esquemas
- Múltiples opciones para ajustar su comparación y sincronización
- Generación de informes de comparación y sincronización
Además, prueba gratuita de 30 días y compra sin riesgo con garantía de devolución de dinero por 30 días.
Prueba este SQL.
- Ejecutarlo contra cada base de datos.
- Guarde el resultado en archivos de texto.
- Difiere los archivos de texto.
/* get list of objects in the database */
SELECT name,
type
FROM sysobjects
ORDER BY type, name
/* get list of columns in each table / parameters for each stored procedure */
SELECT so.name,
so.type,
sc.name,
sc.number,
sc.colid,
sc.status,
sc.type,
sc.length,
sc.usertype ,
sc.scale
FROM sysobjects so ,
syscolumns sc
WHERE so.id = sc.id
ORDER BY so.type, so.name, sc.name
/* get definition of each stored procedure */
SELECT so.name,
so.type,
sc.number,
sc.text
FROM sysobjects so ,
syscomments sc
WHERE so.id = sc.id
ORDER BY so.type, so.name, sc.number
Encontré esta herramienta pequeña y gratuita que se adapta a la mayoría de mis necesidades. http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html
Es muy básico pero muestra las diferencias de esquema de dos bases de datos. No tiene ningún elemento elegante como los scripts generados automáticamente para hacer que las diferencias desaparezcan y no compara ningún dato.
Es solo una utilidad pequeña y gratuita que muestra las diferencias de esquema :)
Espero poder ayudar, este es el artículo que sugiero leer:
Compare esquemas de base de datos de SQL Server automáticamente
Describe cómo puede automatizar el proceso de sincronización y comparación de esquemas de SQL Server utilizando T-SQL, SSMS o una herramienta de terceros.