2017-06-30 3 views
0

Je ne peux pas modifier/supprimer des objets dans ma base de données, créez seulement, insérer et supprimer des enregistrements. Par exemple, je reçois ...Impossible de supprimer/modifier des tables en raison de la transaction terminée par erreur déclenchement ms-sql-server 2008

Vous ne pouvez pas Msg 3609, niveau 16, état 2, ligne 1 La transaction s'est terminée dans le déclencheur. Le lot a été annulé.

sur le code suivant (sur l'étape drop table):

create schema Test 
go 
create table test.test (
test varchar(5) 
) 
go 
insert into test.test(test) values('test') 
go 
select * 
from Test.test 
go 
drop table Test.test 
go 
drop schema Test 
go 

Je certainement pas créé de déclencheurs sur la base de données jamais. Je n'ai pas le contrôle du serveur donc mes permissions sont limitées. Le problème vient de se produire. J'utilise cette base de données depuis des années. C'est la première fois que cela arrive. Je crois que cela a quelque chose à voir avec les permissions.

Je ne sais pas ce qui est à l'origine de cette nouvelle erreur de se produire.

+1

Le code semble bien ... quelque chose manque. Pouvez-vous exécuter chaque bloc 'GO' et voir s'il s'exécute correctement? –

+0

Tout fonctionne bien jusqu'à l'instruction "drop", c'est-à-dire quand j'obtiens l'erreur. Je ne peux pas le laisser tomber ou modifier le design. Je peux créer la table et ensuite seulement ajouter/supprimer des enregistrements. –

+0

Aucun problème sur mon ordinateur local, mais c'est comme prévu. Je dois penser que cela a quelque chose à voir avec la façon dont mon compte distant est configuré. Les techniciens hébergeant le site sont également incapables de laisser tomber la table en utilisant leur compte sa. –

Répondre

0

J'ai trouvé le problème. Quelqu'un a piraté ma base de données en ajoutant un déclencheur de base de données "test_ddl_trigger":

`SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
create trigger [test_ddl_trigger] on database for drop_table, alter_table as print 'You can not' 
rollback 
; 
GO 
SET ANSI_NULLS OFF 
GO 
SET QUOTED_IDENTIFIER OFF 
GO 
ENABLE TRIGGER [test_ddl_trigger] ON DATABASE 
GO`