Pergunta

Não é possível encontrar um SQL ferramenta de comparação que atende as minhas necessidades, eu estou a escrever o meu próprio.Entre INFORMATION_SCHEMA e sys tabelas, eu tenho uma mais completa versão de trabalho.Mas uma coisa que eu não consigo encontrar em metadados é o definição de um gatilho, você sabe, o real código SQL.Estou vista algo?

Obrigado.


Obrigado, Pete, eu não sabia sobre isso!

Scott, eu estou trabalhando com pacotes de hospedagem que não permite conexões remotas para o DB.Eu não sei desde as especificações sobre RedGate (que eu não posso pagar de qualquer maneira), se se fornecer uma solução para isso, e embora também haja API lá fora (como a partir do Ápice), eu não vejo o ponto em investir em uma solução que ainda vai exigir mais da programação da minha parte.:)

A minha solução é a queda de uma página ASPX no site que funciona como uma espécie de "esquema de serviço", retornando os metadados coletados como XML.Fiz um pouco de AJAX aplicativo que compara com qualquer número de catálogo instâncias de um mestre e mostra os diferenciais.Ele não é perfeito, mas um grande passo a frente para mim.

Obrigado novamente!

Foi útil?

Solução

sp_helptext trabalha para obter o sql que faz um gatilho.

A coluna de texto no syscomments ver também contém o sql utilizado para a criação do objeto.

Outras dicas

De 2005 e 2008, você pode usar o OBJECT_DEFINITION() função

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 expandir SQLMenace a resposta, aqui está uma simples consulta para retornar todos os gatilhos e suas definições a partir de um banco de dados:

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' 

esta consulta de retorno gatilho com seu nome e o seu corpo.

Select 
    [tgr].[name] as [trigger name], 
    [tbl].[name] as [table name] , 
    OBJECT_DEFINITION(tgr.id) body

    from sysobjects tgr 

    join sysobjects tbl
    on tgr.parent_obj = tbl.id

WHERE tgr.xtype = 'TR'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top