sql-server - una - trigger ddl sql server
¿Cómo puedo obtener la definición(cuerpo) de un disparador en SQL Server? (4)
Al no poder encontrar una herramienta SQL diff que satisfaga mis necesidades, estoy escribiendo la mía. Entre las tablas INFORMATION_SCHEMA y sys, tengo una versión de trabajo en su mayoría completa. Pero una cosa que no puedo encontrar en los metadatos es la definición de un disparador, ya sabes, el código SQL real. ¿Estoy pasando por alto algo?
Gracias.
Gracias, Pete, ¡no sabía nada de eso!
Scott, estoy trabajando con paquetes de alojamiento muy básicos que no permiten conexiones remotas al DB. No sé por las especificaciones en RedGate (que no puedo pagar de todos modos) si proporcionan una solución alternativa para eso, y aunque también hay API (como la de Apex), no vi el apunto de invertir en una solución que aún requeriría más programación de mi parte. :)
Mi solución es colocar una página ASPX en el sitio que funcione como una especie de "servicio de esquema", devolviendo los metadatos recopilados como XML. Configuré una pequeña aplicación AJAX que compara cualquier número de instancias de catálogo con un maestro y muestra los difs. No es perfecto, pero es un gran paso adelante para mí.
¡Gracias de nuevo!
Para 2005 y 2008 puede usar la función OBJECT_DEFINITION ()
sp_helptext funciona para obtener el sql que conforma un desencadenador.
La columna de texto en la vista syscomments también contiene el sql utilizado para la creación de objetos.
SELECT
DB_NAME() AS DataBaseName,
dbo.SysObjects.Name AS TriggerName,
dbo.sysComments.Text AS SqlContent
FROM
dbo.SysObjects INNER JOIN
dbo.sysComments ON
dbo.SysObjects.ID = dbo.sysComments.ID
WHERE
(dbo.SysObjects.xType = ''TR'')
AND
dbo.SysObjects.Name = ''<YourTriggerName>''
Para ampliar la respuesta de SQLMenace, aquí hay una consulta simple para devolver todos los desencadenantes y sus definiciones de una base de datos:
SELECT
sysobjects.name AS trigger_name,
OBJECT_NAME(parent_obj) AS table_name,
OBJECT_DEFINITION(id) AS trigger_definition
FROM sysobjects
WHERE sysobjects.type = ''TR''