我如何可以获得的定义(身体)的一个触发器在SQL服务器?
-
09-06-2019 - |
题
无法找到一个SQL差异的工具,满足我的要求我写我自己。之间的信息和系统表,我有一个大部分完成工作版本。但有一件事我可以找不到的元数据,是的 定义 一个触发的,你知道,实际SQL代码。我俯瞰着的东西吗?
谢谢。
谢谢,皮特,我不知道!
斯科特,我的工作非常基本主持的包裹,不允许远程连接的数据库。我不知道,从前在展鹏(我可以负担不起无论如何)是否提供一个解决办法,虽然也有API有(例如一个从顶点),我没有看到在投资于一个解决方案,仍然需要更多的编程在我的一部分。:)
我的解决方案是降ASPX页在网站上,作为一种"模式服务",回该收集的元数据作为XML。我设置了一个小小的AJAX应用程序,进行比较的任何数量目录的实例主和显示出的差异.它是不完美的,但是向前迈进的一大步,对我来说。
再次感谢!
解决方案
sp_helptext工作得到sql,构成了一个触发器。
该案文列在syscomments视也包含sql用于对象的创造。
其他提示
2005年和2008年可以使用 OBJECT_DEFINITION() 功能
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>'
扩大SQLMenace的答案,这是一个简单的查询,以返回所有的触发器及其定义来自一个数据库:
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'
这个查询返回触发其姓名和身体。
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'
不隶属于 StackOverflow