2009-11-27 7 views
3

Est-il possible, dans un script exécuté dans MS SQL Server 2005, de copier un déclencheur d'une base de données vers une autre?Copier le déclencheur d'une base de données à une autre

On m'a demandé d'écrire un script de test pour un déclencheur que mon projet utilise. Notre structure de test consiste à créer une base de données vide contenant uniquement l'objet testé, puis à exécuter un script sur cette base de données qui crée tous les autres objets nécessaires au test, les remplit, exécute les tests nécessaires, compare les résultats aux résultats attendus, et laisse tomber tout sauf l'objet à tester.

Je ne peux pas créer une base de données vide sauf pour le déclencheur, car le déclencheur dépend de plusieurs tables. Mon script de test exécute actuellement le CREATE TRIGGER après que toutes les tables requises ont été créées, mais cela ne fonctionnera pas car le script de test n'est pas autorisé à contenir l'objet testé. Ce qui a été suggéré est que, au lieu d'exécuter un CREATE TRIGGER, je copie d'une manière ou d'une autre le déclencheur à ce point dans le script de la base de données en ligne à la base de données de test. J'ai eu un rapide Google et n'ai pas trouvé un moyen de le faire. Ainsi, ma question - est-ce même possible, et si oui, comment puis-je le faire?

Répondre

2

Vous pouvez lire le texte de la détente avec sp_helptext (triggername)

Vous pouvez également sélectionner le texte dans une variable et d'exécuter que:

declare @sql varchar(8000) 


select @sql = object_definition(object_id) 
from sys.triggers 
where name = 'testtrigger' 

EXEC @sql 
+0

Merci, c'est génial. Avec quelques USEs et EXEC (@sql) cela fait exactement ce que je veux. – Rawling

+0

vous êtes les bienvenus :) – edosoft

Questions connexes