Aracılığıyla paylaş


Tasarlama DDL Tetikleyicileri

DDL tetikleyicisi tasarlayabilirsiniz önce aşağıdakiler gereklidir:

  • DDL tetikleyicisi kapsamını anlamalısınız.

  • Hangi belirleme Transact-SQL deyimini veya deyimlerini, Grup, tetikleyici harekete.

Security noteSecurity Note:

Kötü amaçlı kod içinde Tetikleyicileri escalated ayrıcalıklarıyla çalışır.Bu tehdide azaltmaya yardımcı olmak konusunda daha fazla bilgi için bkz: Tetikleyici güvenliği yönetme.

Not

DDL tetikleyiciler, yerel veya genel geçici tablolar ve saklı yordamlar etkileyen olaylarına yanıt olarak harekete değil.

Harekete geçirici kapsam anlama

DDL Tetikleyicileri yanıt olarak baþlatmak bir Transact-SQL olay, geçerli veritabanındaki veya sunucudaki geçerli işlendi. Tetikleyici kapsamını olayı bağlıdır.Örneğin, yanıt olarak bir CREATE_TABLE ateşlenmesine DDL tetikleyicisi oluşturulan olay bir CREATE_TABLE olduğunda bunu yapabilirsiniz olay veritabanı veya sunucu kopyasına oluşur.DDL tetikleyicisi CREATE_LOGIN bir olaya yanıt olarak baþlatmak için oluşturulan yalnızca bir CREATE_LOGIN olayı sunucu oluşur yapabilirsiniz.

Aşağıdaki örnekte, DDL tetikleyicisi safety her harekete bir DROP_TABLE veya ALTER_TABLE olay, veritabanında oluşur.

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK
;

Aşağıdaki örnekte, DDL tetikleyicisi bir ileti varsa yazdırır CREATE_DATABASE Olay geçerli bir sunucu örneğinde oluşur. Örnek kullanır EVENTDATA işlev, buna karşılık gelen metni almak için Transact-SQL deyim. EVENTDATA DDL Tetikleyicileri ile kullanma hakkında daha fazla bilgi için bkz: EVENTDATA işlevini kullanarak.

Eşleme listeler Transact-SQLdeyim için belirtilen kapsamlar için bu konuda daha sonra "Seçme bir belirli DDL ekstresi için yangın bir DDL tetikleyicisi," bölümünde sağlanan bağlantıları aracılığıyla kullanılabilir.

DDL Tetikleyicileri kapsamlı veritabanı nesneleri, oluşturuldukları veritabanında depolanır.DDL Tetikleyicileri oluşturulabilir Yönetici veritabanı ve yalnızca kullanıcı için tasarlanmış veritabanlarından oluşturulmuş gibi davranır.Sorgulayarak, DDL tetikleyiciler hakkında bilgi edinebilirsiniz trigger kataloğunu görüntüleyin.Sorgulama yapabilirsiniz trigger gibi bir tanıtıcı olarak veritabanı adı belirterek veya Tetikleyiciler oluşturulduğu veritabanına bağlamaMaster.sys.Triggers.

DDL Tetikleyicileri sunucu kapsamlı nesneler olarak depolanan Yönetici veritabanıdır.Ancak, sorgulayarak sunucu kapsamlı DDL tetikleyiciler hakkında bilgi edinebilirsiniz sys.server_triggers veritabanı bağlamda kataloğunu görüntüleyin.

DDL Tetikleyiciler için meta veriler alma hakkında daha fazla bilgi için bkz: DDL Tetikleyicileri hakkında bilgi alma.

Bir Transact-SQL deyim veya deyimleri grubu belirtme

DDL Tetikleyicileri, bir veya daha çok belirli DDL ifadeleri veya DDL) deyimleri önceden tanımlanmış bir dizi yanıt baþlatmak için oluşturulabilir.

DDL bir tetikleyici baþlatmak için belirli bir DDL ekstresi seçme

Sonra bir veya daha çok belirli ateşlenmesine DDL Tetikleyicileri tasarlanabilir. Transact-SQL ifadeleri çalışır. Önceki örnekte, tetikler. safety herhangi bir sonra harekete geçirilir DROP_TABLE veya ALTER_TABLE Olay. Listeleri için Transact-SQL DDL tetikleyicisi baþlatmak için belirtilen deyimleri ve kapsam, tetikleyici harekete görmek için DDL olayları.

Önceden tanımlanmış bir DDL tetikleyicisi baþlatmak için DDL ekstreleri grubu seçme.

DDL tetikleyicisi herhangi bir yürütme sonrasında baþlatmak Transact-SQL benzer olaylar için önceden tanımlanmış bir gruplandırma ait olay. Örneğin, herhangi bir CREATE tablo, ALTER tablo veya DROP tablo deyim çalıştırıldıktan sonra ateşlenmesine DDL tetikleyicisi isterseniz, FOR DDL_TABLE_EVENTS TRIGGER CREATE deyiminde belirtebilirsiniz.CREATE TRIGGER çalıştırıldıktan sonra bir olay grubu tarafından kapsanır olaylar eklenir sys.trigger_events kataloğunu görüntüleyin.

Not

Içinde SQL Server 2005, tetikleyici olay grubunun oluşturduysanız sys.trigger_events , olay grubu hakkındaki bilgileri içerirsys.trigger_events , yalnızca o grubu tarafından kapsanan belirli olaylarla ilgili bilgileri içerir.Içinde SQL Server 2008, sys.trigger_events hakkında olay grup üzerinde Tetikleyiciler oluşturulur ve olay Grup kapsayan ayrı olaylar hakkında meta veriler kalır.Bu nedenle, olay grupları kapsamındaki olaylar için değiştirir. SQL Server 2008 Olay grupların oluşturulmuş DDL Tetikleyicileri için geçerli değildir SQL Server 2005.

Kapak ve bir anda, bu olay grupları programlanabilir Bkz: kapsamlar belirli ifadeleri DDL Tetikleyicileri kullanılabilir DDL deyimlerinin önceden tanımlı gruplar listesi için olay grupları DDL olay grupları (ingilizce).