ALTER TRIGGER(Transact-SQL)ALTER TRIGGER (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이전에 CREATE TRIGGER 문을 사용해 만든 DML, DDL 또는 LOGON 트리거의 정의를 수정합니다.Modifies the definition of a DML, DDL, or logon trigger that was previously created by the CREATE TRIGGER statement. 트리거는 CREATE TRIGGER를 사용하여 만듭니다.Triggers are created by using CREATE TRIGGER. 직접 만들 수 있습니다 Transact-SQLTransact-SQL 문에서 만든 어셈블리의 메서드로 MicrosoftMicrosoft .NET Framework.NET Framework 공용 언어 런타임 (CLR)의 인스턴스에 업로드 SQL ServerSQL Server합니다.They can be created directly from Transact-SQLTransact-SQL statements or from methods of assemblies that are created in the MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR) and uploaded to an instance of SQL ServerSQL Server. ALTER TRIGGER 문에 사용 되는 매개 변수에 대 한 자세한 내용은 참조 CREATE trigger( Transact SQL ) .For more information about the parameters that are used in the ALTER TRIGGER statement, see CREATE TRIGGER (Transact-SQL).

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

-- SQL Server Syntax  
-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)  

ALTER TRIGGER schema_name.trigger_name   
ON  ( table | view )   
[ WITH <dml_trigger_option> [ ,...n ] ]  
 ( FOR | AFTER | INSTEAD OF )   
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }   
[ NOT FOR REPLICATION ]   
AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME <method specifier>   
[ ; ] }   

<dml_trigger_option> ::=  
    [ ENCRYPTION ]  
    [ <EXECUTE AS Clause> ]  

<method_specifier> ::=  
    assembly_name.class_name.method_name  

-- Trigger on an INSERT, UPDATE, or DELETE statement to a table 
-- (DML Trigger on memory-optimized tables)  

ALTER TRIGGER schema_name.trigger_name   
ON  ( table  )   
[ WITH <dml_trigger_option> [ ,...n ] ]  
 ( FOR | AFTER )   
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }   
AS { sql_statement [ ; ] [ ...n ] }   

<dml_trigger_option> ::=  
    [ NATIVE_COMPILATION ]  
    [ SCHEMABINDING ]  
    [ <EXECUTE AS Clause> ]  

-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, 
-- or UPDATE statement (DDL Trigger)  

ALTER TRIGGER trigger_name   
ON { DATABASE | ALL SERVER }   
[ WITH <ddl_trigger_option> [ ,...n ] ]  
{ FOR | AFTER } { event_type [ ,...n ] | event_group }   
AS { sql_statement [ ; ] | EXTERNAL NAME <method specifier>   
[ ; ] }  
}   

<ddl_trigger_option> ::=  
    [ ENCRYPTION ]  
    [ <EXECUTE AS Clause> ]  

<method_specifier> ::=  
    assembly_name.class_name.method_name  

-- Trigger on a LOGON event (Logon Trigger)  

ALTER TRIGGER trigger_name   
ON ALL SERVER   
[ WITH <logon_trigger_option> [ ,...n ] ]  
{ FOR| AFTER } LOGON   
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier >  
  [ ; ] }  

<logon_trigger_option> ::=  
    [ ENCRYPTION ]  
    [ EXECUTE AS Clause ]  

<method_specifier> ::=  
    assembly_name.class_name.method_name  
-- Windows Azure SQL Database Syntax   
-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)   

ALTER TRIGGER schema_name. trigger_name   
ON (table | view )   
 [ WITH <dml_trigger_option> [ ,...n ] ]   
 ( FOR | AFTER | INSTEAD OF )   
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }   
AS { sql_statement [ ; ] [...n ] }   

<dml_trigger_option> ::=   
    [ <EXECUTE AS Clause> ]   

-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE statement (DDL Trigger)   

ALTER TRIGGER trigger_name   
ON { DATABASE }   
 [ WITH <ddl_trigger_option> [ ,...n ] ]   
{ FOR | AFTER } { event_type [ ,...n ] | event_group }   
AS { sql_statement   
[ ; ] }  
}   

<ddl_trigger_option> ::=   
    [ <EXECUTE AS Clause> ]  

인수Arguments

schema_nameschema_name
DML 트리거가 속한 스키마의 이름입니다.Is the name of the schema to which a DML trigger belongs. DML 트리거는 트리거가 생성된 테이블 또는 뷰의 스키마로 한정됩니다.DML triggers are scoped to the schema of the table or view on which they are created. 스키마_name DML 트리거가 해당 테이블 또는 뷰가 기본 스키마에 속하는 경우에 선택 사항입니다.schema_name is optional only if the DML trigger and its corresponding table or view belong to the default schema. schema_name DDL 또는 logon 트리거에 대해서는 지정할 수 없습니다.schema_name cannot be specified for DDL or logon triggers.

trigger_nametrigger_name
수정할 기존 트리거입니다.Is the existing trigger to modify.

테이블 | 보기table | view
DML 트리거가 실행되는 테이블 또는 뷰입니다.Is the table or view on which the DML trigger is executed. 필요에 따라 테이블 또는 뷰의 정규화된 이름을 지정할 수 있습니다.Specifying the fully-qualified name of the table or view is optional.

DATABASEDATABASE
현재 데이터베이스에 DDL 트리거의 해당 범위를 적용합니다.Applies the scope of a DDL trigger to the current database. 때마다 트리거가 실행을 지정 하는 경우 event_type 또는 event_group 현재 데이터베이스에서 발생 합니다.If specified, the trigger fires whenever event_type or event_group occurs in the current database.

ALL SERVERALL SERVER
적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

현재 서버에 DDL 또는 LOGON 트리거의 범위를 적용합니다.Applies the scope of a DDL or logon trigger to the current server. 때마다 트리거가 실행을 지정 하는 경우 event_type 또는 event_group 현재 서버에서 발생 합니다.If specified, the trigger fires whenever event_type or event_group occurs anywhere in the current server.

WITH ENCRYPTIONWITH ENCRYPTION
적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

ALTER TRIGGER 문의 텍스트가 포함 된 sys.syscommentssys.sql_modules 항목을 암호화 합니다.Encrypts the sys.syscommentssys.sql_modules entries that contain the text of the ALTER TRIGGER statement. WITH ENCRYPTION을 사용하면 트리거가 SQL ServerSQL Server 복제의 일부로 게시되지 않도록 방지할 수 있습니다.Using WITH ENCRYPTION prevents the trigger from being published as part of SQL ServerSQL Server replication. CLR 트리거에 대해서는 WITH ENCRYPTION을 지정할 수 없습니다.WITH ENCRYPTION cannot be specified for CLR triggers.

참고

WITH ENCRYPTION 설정으로 트리거를 만든 경우 옵션의 설정 상태를 유지하기 위해서는 반드시 ALTER TRIGGER 문에 다시 설정을 포함시켜야 합니다.If a trigger is created by using WITH ENCRYPTION, it must be specified again in the ALTER TRIGGER statement for this option to remain enabled.

EXECUTE ASEXECUTE AS
트리거가 실행되는 보안 컨텍스트를 지정합니다.Specifies the security context under which the trigger is executed. 트리거가 참조하는 데이터베이스 개체에 대한 사용 권한의 유효성을 검사하기 위해 SQL ServerSQL Server 인스턴스가 사용하는 사용자 계정을 제어할 수 있도록 합니다.Enables you to control the user account the instance of SQL ServerSQL Server uses to validate permissions on any database objects that are referenced by the trigger.

자세한 내용은 EXECUTE AS 절(Transact-SQL)을 참조하세요.For more information, see EXECUTE AS Clause (Transact-SQL).

NATIVE_COMPILATIONNATIVE_COMPILATION
트리거가 고유 하 게 컴파일됨을 나타냅니다.Indicates that the trigger is natively compiled.

이 옵션은 메모리 액세스에 최적화 된 테이블의 트리거에 필요 합니다.This option is required for triggers on memory-optimized tables.

SCHEMABINDINGSCHEMABINDING
하면 트리거에 의해 참조 되는 테이블 삭제 또는 변경할 수 없습니다.Ensures that tables that are referenced by a trigger cannot be dropped or altered.

이 옵션에 메모리 액세스에 최적화 된 테이블의 트리거에 대 한 필요 하며 기존 테이블의 트리거에 대 한 지원 되지 않습니다.This option is required for triggers on memory-optimized tables and is not supported for triggers on traditional tables.

AFTERAFTER
트리거를 시작하는 SQL 문이 성공적으로 실행된 후에만 트리거가 실행되도록 지정합니다.Specifies that the trigger is fired only after the triggering SQL statement is executed successfully. 또한 이 트리거가 실행되기 전에 모든 참조 연계 동작과 제약 조건 검사가 제대로 수행되어야 합니다.All referential cascade actions and constraint checks also must have been successful before this trigger fires.

FOR 키워드만 지정된 경우 AFTER가 기본값입니다.AFTER is the default, if only the FOR keyword is specified.

DML AFTER 트리거는 테이블에만 정의될 수 있습니다.DML AFTER triggers may be defined only on tables.

INSTEAD OFINSTEAD OF
트리거를 시작하는 SQL 문 대신 DML 트리거가 실행되도록 지정합니다. 즉, 트리거를 시작하는 문의 동작을 재정의합니다.Specifies that the DML trigger is executed instead of the triggering SQL statement, therefore, overriding the actions of the triggering statements. DDL 또는 LOGON 트리거에 대해서는 INSTEAD OF를 지정할 수 없습니다.INSTEAD OF cannot be specified for DDL or logon triggers.

테이블이나 뷰에 대해 INSERT, UPDATE 또는 DELETE 문당 INSTEAD OF 트리거를 하나만 정의할 수 있습니다.At most, one INSTEAD OF trigger per INSERT, UPDATE, or DELETE statement can be defined on a table or view. 그러나 고유한 INSTEAD OF 트리거가 있는 각 뷰에 대해 뷰를 정의할 수 있습니다.However, you can define views on views where each view has its own INSTEAD OF trigger.

WITH CHECK OPTION을 사용하여 작성된 뷰에는 INSTEAD OF 트리거를 사용할 수 없습니다.INSTEAD OF triggers are not allowed on views created by using WITH CHECK OPTION. WITH CHECK OPTION이 지정된 뷰에 INSTEAD OF 트리거를 추가하면 SQL ServerSQL Server에서 오류가 발생합니다. SQL ServerSQL Server raises an error when an INSTEAD OF trigger is added to a view for which WITH CHECK OPTION was specified. 사용자는 INSTEAD OF 트리거를 정의하기 전에 반드시 ALTER VIEW를 사용하여 해당 옵션을 제거해야 합니다.The user must remove that option using ALTER VIEW before defining the INSTEAD OF trigger.

{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } | { [INSERT ] [ , ] [ UPDATE ] }{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } | { [INSERT ] [ , ] [ UPDATE ] }
현재 테이블 또는 뷰에 데이터 수정 문 실행을 시도할 경우 DML 트리거를 활성화하도록 지정합니다.Specifies the data modification statements, when tried against this table or view, activate the DML trigger. 적어도 하나의 옵션을 지정해야 합니다.At least one option must be specified. 순서에 상관없이 어떤 방법으로도 옵션을 조합할 수 있습니다.Any combination of these in any order is allowed in the trigger definition. 둘 이상의 옵션을 지정한 경우에는 옵션을 쉼표로 분리하세요.If more than one option is specified, separate the options with commas.

INSTEAD OF 트리거의 경우 ON DELETE 연계 동작을 지정하는 참조 관계가 있는 테이블에 대해서는 DELETE 옵션을 사용할 수 없습니다.For INSTEAD OF triggers, the DELETE option is not allowed on tables that have a referential relationship specifying a cascade action ON DELETE. 마찬가지로 연계 동작인 ON UPDATE를 지정하는 참조 관계가 있는 테이블에 대해서도 UPDATE 옵션이 허용되지 않습니다.Similarly, the UPDATE option is not allowed on tables that have a referential relationship specifying a cascade action ON UPDATE. 자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.For more information, see ALTER TABLE (Transact-SQL).

event_typeevent_type
실행된 후에 DDL 트리거가 실행되도록 하는 Transact-SQLTransact-SQL 언어 이벤트의 이름입니다.Is the name of a Transact-SQLTransact-SQL language event that, after execution, causes a DDL trigger to fire. DDL 트리거에 유효한 이벤트에 나열 됩니다 DDL 이벤트합니다.Valid events for DDL triggers are listed in DDL Events.

event_groupevent_group
Transact-SQLTransact-SQL 언어 이벤트의 미리 정의된 그룹 이름입니다.Is the name of a predefined grouping of Transact-SQLTransact-SQL language events. 실행 된 이후에 DDL 트리거가 실행 Transact-SQLTransact-SQL 언어 이벤트에 속하는 event_group합니다.The DDL trigger fires after execution of any Transact-SQLTransact-SQL language event that belongs to event_group. DDL 트리거에 유효한 이벤트 그룹에 나열 됩니다 DDL 이벤트 그룹합니다.Valid event groups for DDL triggers are listed in DDL Event Groups. ALTER TRIGGER 실행이 완료 된 후 event_group 도 매크로로 하 여 역할 추가 이벤트 유형을 sys.trigger_events 카탈로그 뷰에 있습니다.After ALTER TRIGGER has finished running, event_group also acts as a macro by adding the event types it covers to the sys.trigger_events catalog view.

NOT FOR REPLICATIONNOT FOR REPLICATION
적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

복제 에이전트가 트리거와 연관된 테이블을 수정할 때 트리거를 실행할 수 없음을 나타냅니다.Indicates that the trigger should not be executed when a replication agent modifies the table involved in the trigger.

sql_statementsql_statement
트리거 조건 및 동작입니다.Is the trigger conditions and actions.

메모리 액세스에 최적화 된 테이블에는 트리거에 대 한 유일한 sql_statement ATOMIC 블록은 최상위 수준에서 사용할 수 있습니다.For triggers on memory-optimized tables, the only sql_statement allowed at the top level is an ATOMIC block. ATOMIC 블록 내에서 허용 하는 T-SQL 기본 프로시저 내에서 허용 하는 T-SQL으로 제한 됩니다.The T-SQL allowed inside the ATOMIC block is limited by the T-SQL allowed inside native procs.

외부 이름 <method_specifier >EXTERNAL NAME <method_specifier>
적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

트리거와 바인딩할 어셈블리의 메서드를 지정합니다.Specifies the method of an assembly to bind with the trigger. 이 메서드는 인수가 없어야 하며 void를 반환해야 합니다.The method must take no arguments and return void. class_name 은 유효한 SQL ServerSQL Server 식별자 하며 어셈블리 표시 유형이 있는 어셈블리에 클래스로 존재 해야 합니다.class_name must be a valid SQL ServerSQL Server identifier and must exist as a class in the assembly with assembly visibility. 클래스는 중첩 클래스일 수 없습니다.The class cannot be a nested class.

주의Remarks

ALTER TRIGGER에 대 한 자세한 내용은의 설명을 참조 CREATE trigger( Transact SQL ) .For more information about ALTER TRIGGER, see Remarks in CREATE TRIGGER (Transact-SQL).

참고

포함된 데이터베이스에서는 EXTERNAL_NAME 및 ON_ALL_SERVER 옵션을 사용할 수 없습니다.The EXTERNAL_NAME and ON_ALL_SERVER options are not available in a contained database.

DML 트리거DML Triggers

ALTER TRIGGER는 테이블과 뷰의 INSTEAD OF 트리거를 통해 수동으로 업데이트할 수 있는 뷰를 지원합니다.ALTER TRIGGER supports manually updatable views through INSTEAD OF triggers on tables and views. SQL ServerSQL Server는 모든 종류의 트리거(AFTER, INSTEAD-OF)에 대해 동일한 방식으로 ALTER TRIGGER를 적용합니다. applies ALTER TRIGGER the same way for all kinds of triggers (AFTER, INSTEAD-OF).

sp_settriggerorder를 사용하여 테이블에서 실행할 처음 및 마지막 AFTER 트리거를 지정할 수 있습니다.The first and last AFTER triggers to be executed on a table can be specified by using sp_settriggerorder. 하나의 테이블에는 처음 및 마지막 AFTER 트리거를 하나씩만 지정할 수 있습니다.Only one first and one last AFTER trigger can be specified on a table. 동일한 테이블에 다른 AFTER 트리거가 있는 경우 임의로 실행됩니다.If there are other AFTER triggers on the same table, they are randomly executed.

ALTER TRIGGER 문에서 첫 번째 트리거나 마지막 트리거를 변경하면 수정된 트리거에 설정된 첫 번째 또는 마지막 특성은 삭제되며 sp_settriggerorder를 사용하여 순서 값을 다시 설정해야 합니다.If an ALTER TRIGGER statement changes a first or last trigger, the first or last attribute set on the modified trigger is dropped, and the order value must be reset by using sp_settriggerorder.

AFTER 트리거는 트리거를 시작하는 SQL 문이 성공적으로 실행된 후에만 실행됩니다.An AFTER trigger is executed only after the triggering SQL statement has executed successfully. 또한 업데이트 또는 삭제된 개체와 관련된 모든 참조 연계 동작과 제약 조건 확인이 성공적으로 수행되어야 합니다.This successful execution includes all referential cascade actions and constraint checks associated with the object updated or deleted. AFTER 트리거 작업은 트리거를 시작하는 문의 효과와 문에 의해 발생하는 모든 참조 연계 UPDATE 및 DELETE 동작의 효과를 확인합니다.The AFTER trigger operation checks for the effects of the triggering statement and also all referential cascade UPDATE and DELETE actions that are caused by the triggering statement.

부모 테이블의 DELETE 시 CASCADE 결과가 자식 테이블이나 참조하는 테이블에 대한 DELETE 동작이며 자식 테이블에 DELETE 시 INSTEAD OF 트리거가 정의되어 있으면 트리거가 무시되고 DELETE 작업이 실행됩니다.When a DELETE action to a child or referencing table is the result of a CASCADE on a DELETE from the parent table, and an INSTEAD OF trigger on DELETE is defined on that child table, the trigger is ignored and the DELETE action is executed.

DDL 트리거DDL Triggers

DDL 트리거는 DML 트리거와 달리 스키마로 범위가 한정되지 않습니다.Unlike DML triggers, DDL triggers are not scoped to schemas. 따라서 DDL 트리거에 대한 메타데이터를 쿼리할 때는 OBJECT_ID, OBJECT_NAME, OBJECTPROPERTY 및 OBJECTPROPERTY(EX)를 사용할 수 없습니다.Therefore, the OBJECT_ID, OBJECT_NAME, OBJECTPROPERTY, and OBJECTPROPERTY(EX) cannot be used when querying metadata about DDL triggers. 대신 카탈로그 뷰를 사용하세요.Use the catalog views instead. 자세한 내용은 참조 DDL 트리거에 대 한 정보 가져오기합니다.For more information, see Get Information About DDL Triggers.

LOGON 트리거Logon Triggers

Azure SQL 데이터베이스Azure SQL Database에서는 LOGON 이벤트에 대한 트리거를 지원하지 않습니다. does not support triggers on logon events.

PermissionsPermissions

DML 트리거를 변경하려면 트리거가 정의된 테이블 또는 뷰에 대한 ALTER 권한이 필요합니다.To alter a DML trigger requires ALTER permission on the table or view on which the trigger is defined.

서버 범위(ON ALL SERVER)로 정의된 DDL 트리거 또는 LOGON 트리거를 변경하려면 해당 서버에 대한 CONTROL SERVER 권한이 필요합니다.To alter a DDL trigger defined with server scope (ON ALL SERVER) or a logon trigger requires CONTROL SERVER permission on the server. 데이터베이스 범위(ON DATABASE)로 정의된 DDL 트리거를 변경하려면 현재 데이터베이스에 대한 ALTER ANY DATABASE DDL TRIGGER 권한이 필요합니다.To alter a DDL trigger defined with database scope (ON DATABASE) requires ALTER ANY DATABASE DDL TRIGGER permission in the current database.

Examples

다음 예제에서는 사용자를 추가 하거나 데이터를 변경 하려고 시도 하면 클라이언트로 사용자 정의 메시지를 인쇄 하는 AdventureWorks 2012 데이터베이스의 DML 트리거를 만듭니다는 SalesPersonQuotaHistory 테이블입니다.The following example creates a DML trigger in the AdventureWorks 2012 database, that prints a user-defined message to the client when a user tries to add or change data in the SalesPersonQuotaHistory table. 그런 다음 ALTER TRIGGER 작업에만 해당 트리거를 적용하도록 INSERT를 사용하여 트리거를 수정합니다.The trigger is then modified by using ALTER TRIGGER to apply the trigger only on INSERT activities. 이 트리거는 테이블에 행을 삽입하거나 업데이트하는 사용자에게 Compensation 부서에도 해당 사실을 통지하도록 알려 줍니다.This trigger is helpful because it reminds the user that updates or inserts rows into this table to also notify the Compensation department.

CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  

-- Now, change the trigger.  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  

관련 항목:See Also

DROP TRIGGER(Transact-SQL) DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER(Transact-SQL) ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER(Transact-SQL) DISABLE TRIGGER (Transact-SQL)
EVENTDATA(Transact-SQL) EVENTDATA (Transact-SQL)
sp_helptrigger(Transact-SQL) sp_helptrigger (Transact-SQL)
저장 프로시저 만들기 Create a Stored Procedure
sp_addmessage ( Transact SQL ) sp_addmessage (Transact-SQL)
트랜잭션 Transactions
DML 트리거에 대한 정보 가져오기 Get Information About DML Triggers
DDL 트리거에 대 한 정보 가져오기 Get Information About DDL Triggers
sys.triggers(Transact-SQL) sys.triggers (Transact-SQL)
sys.trigger_events(Transact-SQL) sys.trigger_events (Transact-SQL)
sys.sql_modules(Transact-SQL) sys.sql_modules (Transact-SQL)
sys.assembly_modules(Transact-SQL) sys.assembly_modules (Transact-SQL)
sys.server_triggers(Transact-SQL) sys.server_triggers (Transact-SQL)
sys.server_trigger_events(Transact-SQL) sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules(Transact-SQL) sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules(Transact-SQL) sys.server_assembly_modules (Transact-SQL)
게시 데이터베이스의 스키마 변경Make Schema Changes on Publication Databases