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. schema_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 | viewtable | 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. event_group에 속한 Transact-SQLTransact-SQL 언어 이벤트가 실행된 후에 DDL 트리거가 실행됩니다.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.

EXTERNAL NAME <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.

RemarksRemarks

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.

사용 권한Permissions

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

다음 예에서는 사용자가 SalesPersonQuotaHistory 테이블에 데이터를 추가 또는 변경하려고 시도하면 클라이언트에 사용자 정의 메시지를 인쇄하는 AdventureWorks 2012 데이터베이스의 DML 트리거를 만드는 방법을 보여 줍니다.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