Herramienta gratuita

SQL Server a diagrama ER

Pega un script de T-SQL de SQL Server Management Studio, con sus líneas GO, sus corchetes [dbo] y sus restricciones WITH CHECK, y obtén un diagrama ER, con un marco por esquema cuando el script usa varios. Prueba el ejemplo de RR. HH. y nóminas con departamentos, puestos y empleados que dependen de un responsable.

Resultado de ejemplo

Diagrama de ejemplo dibujado a partir de un ejemplo de SQL Server
Prueba un ejemploRR. HH. y nóminas

Cómo funciona

  1. Pega o suelta tu script de T-SQL

    Un archivo de Generate Scripts de SSMS, la salida de Script Table as, un script de migración de EF Core o sentencias CREATE TABLE escritas a mano, con o sin punto y coma.

  2. Mira las tablas y las claves foráneas

    Cada clave foránea añadida con ALTER TABLE se convierte en una línea entre las dos columnas, y cuando las tablas están repartidas entre dbo, hr y otros esquemas, cada esquema recibe su propio marco.

  3. Ábrelo en Archboard

    Guárdalo como un diagrama nuevo para reorganizarlo, anotarlo, compartir un enlace o exportarlo en SVG y PNG. Para registrarte basta una cuenta de Google o GitHub.

Genera el script del esquema de base de datos en SSMS

En SQL Server Management Studio, haz clic derecho en la base de datos en el Explorador de objetos y elige:

  1. Elige las tablas y, en Advanced, deja Types of data to script en Schema only; luego guarda el script en un archivo .sql. Para una sola tabla, haz clic derecho sobre ella y elige Script Table as y después CREATE To.

    Tasks > Generate Scripts

Sintaxis de T-SQL en un script

Qué pasa con cada construcción de un script de T-SQL:

[dbo].[Employees]
Se lee. Los nombres entre corchetes o entre comillas dobles se emparejan sin distinguir mayúsculas de minúsculas, y dbo se toma como esquema por defecto.
GO
Un separador de lotes cuando aparece solo en una línea, con o sin un número como GO 2. Las sentencias sin punto y coma también se separan.
IDENTITY(1,1)
No se muestra: la columna conserva su tipo, como int, y el valor inicial y el incremento quedan fuera de la tarjeta.
WITH CHECK ADD CONSTRAINT
Se lee. Las claves foráneas que SSMS añade después de las tablas, con WITH CHECK o WITH NOCHECK, se convierten en líneas de relación.
ALTER TABLE … CHECK CONSTRAINT
Se omite. Esta sentencia solo activa una restricción que ya existe, así que no añade nada al diagrama.
ON [PRIMARY]
Se omite, junto con TEXTIMAGE_ON y opciones de índice como WITH (PAD_INDEX = OFF, …).
NVARCHAR(MAX)
Se muestra como tipo de columna, igual que cualquier otro tipo con longitud o precisión.
IF NOT EXISTS … BEGIN … END
Se desenvuelve. El CREATE TABLE que va dentro de las comprobaciones de existencia que escriben los scripts idempotentes de EF Core y SSMS se lee como cualquier otro.

Lo que un diagrama de T-SQL deja fuera

  • Procedimientos almacenados, vistas, funciones y disparadores. Cada cuerpo se omite hasta el siguiente GO y se cuenta, así que una tabla creada dentro de un procedimiento no se dibuja.
  • Tablas temporales como #staging y ##shared, y variables de tabla. Solo existen mientras dura una sesión o un lote: las tablas temporales se dejan fuera y se cuentan, y las variables de tabla se omiten sin contarse.
  • Propiedades extendidas, incluidos los textos MS_Description añadidos con sp_addextendedproperty. Las descripciones no se leen.
  • Lo que viene de un SQL Server o de una base de datos de Azure SQL en marcha. No se abre ninguna conexión, así que no se muestran recuentos de filas, uso de índices ni diagramas guardados en SSMS.

Preguntas sobre SQL Server

¿Qué opciones de script de SSMS funcionan mejor?

Los valores por defecto de Generate Scripts sirven: las tablas salen como CREATE TABLE y las claves foráneas siguen como ALTER TABLE … WITH CHECK ADD CONSTRAINT, que se lee. Activar Check for object existence envuelve cada objeto en una comprobación IF NOT EXISTS, y eso también se lee sin problema. Incluir los datos solo hace más grande el archivo, porque las filas se omiten.

¿Tengo que quitar las líneas GO?

No. GO se lee como separador de lotes, igual que en SSMS y sqlcmd, también con un número de repeticiones. Los scripts sin GO ni punto y coma también funcionan: cada CREATE, ALTER o palabra clave parecida empieza una sentencia nueva, mientras que expresiones como ON DELETE SET NULL se mantienen enteras.

¿Cómo se muestran dbo y los demás esquemas?

Cuando un script usa más de un esquema, cada esquema con tablas se convierte en un marco: [hr].[Employees] queda en un marco hr junto al marco dbo, y las claves foráneas entre esquemas cruzan los marcos. Los nombres se emparejan sin distinguir mayúsculas de minúsculas, como con la intercalación por defecto de SQL Server.

¿Funciona con Azure SQL Database?

Sí. Azure SQL Database y Azure SQL Managed Instance usan T-SQL, así que los scripts generados desde SSMS se leen igual, y también los scripts de migración de EF Core. Conecta SSMS al servidor de Azure y usa Generate Scripts como con cualquier otro SQL Server.

¿Se guarda algo al pegar un script?

La vista previa no se guarda. Cuando eliges Abrir en Archboard, el diagrama dibujado, con sus tarjetas de tabla, nombres y tipos de columna, marcos de esquema y líneas, se guarda como un diagrama nuevo en tu espacio de trabajo. Los cambios posteriores en SQL Server no lo actualizan.

¿La herramienta de diagramas ER para SQL Server es gratuita?

Sí. Pegar un script y ver el diagrama no requieren cuenta. Para abrir el diagrama en Archboard basta una cuenta gratuita.

Abre un lienzo en un minuto

Inicia sesión con Google o GitHub. Gratis para un asiento. Mejora el plan cuando se una el equipo.