문제

내 요구 사항을 충족하는 SQL diff 도구를 찾을 수 없어서 직접 작성하고 있습니다.INFORMATION_SCHEMA와 sys 테이블 사이에는 거의 완전한 작업 버전이 있습니다.하지만 메타데이터에서 찾을 수 없는 한 가지는 정의 트리거의 실제 SQL 코드입니다.내가 뭔가를 간과하고 있는 걸까?

감사해요.


고마워요, 피트. 저는 그것에 대해 몰랐어요!

Scott, 저는 DB에 대한 원격 연결을 허용하지 않는 매우 기본적인 호스팅 패키지로 작업하고 있습니다.RedGate의 사양(어차피 감당할 수 없음)에서 이에 대한 해결 방법을 제공하는지 여부를 알 수 없으며 API(예: Apex의 API)도 있지만 볼 수 없습니다. 여전히 더 많은 프로그래밍이 필요한 솔루션에 투자하는 것이 중요합니다.:)

내 솔루션은 일종의 "스키마 서비스" 역할을 하는 ASPX 페이지를 사이트에 드롭하여 수집된 메타데이터를 XML로 반환하는 것입니다.나는 많은 수의 카탈로그 인스턴스를 마스터와 비교하고 차이점을 보여주는 작은 AJAX 앱을 설정했습니다.완벽하지는 않지만 나에게는 중요한 진전입니다.

다시 한 번 감사드립니다!

도움이 되었습니까?

해결책

sp_helptext는 트리거를 구성하는 SQL을 가져오는 데 작동합니다.

syscomments 보기의 텍스트 열에는 개체 생성에 사용된 SQL도 포함되어 있습니다.

다른 팁

2005년과 2008년에는 다음을 사용할 수 있습니다. 객체_정의() 기능

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'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top