2

トリガーを失いました。フィールドを変更しようとすると値が復元されるため、アクティブであることがわかります。SQLServer Management Studioから、クエリを実行すると、追加のクエリ(トリガー1)が実行されていることがわかります。

試しSELECT * FROM sys.triggers WHERE 1 = 1ましたが何も返されません。また、トリガーの名前は知っていますが、トリガーしようとすると、次ALTERのようなエラーが返されます。

オブジェクト「myTrigger」の名前が無効です。

そして私がしようとするとDROP TRIGGER myTrigger ON DATABASE

トリガー'myTrigger'は存在しないか、ユーザーに十分な権限がないため、削除できません。

4

2 に答える 2

2

わかりました、リーベンが言ったように、私は正しいデータベースをクエリしていませんでした...クエリにはDBが定義されていたので、これは奇妙です

ALTER TRIGGER myTrigger
ON [DB].[dbo].[table]

しかし、SQL ServerManagementStudioの上位選択は他のDBを指していた...


編集: 私は少し調査していて(画像をクリーンアップしようとしています)、SQL ServerManagementStudioで奇妙な動作を見つけました。次のようなクエリを実行する場合:

UPDATE [DB].[dbo].[table] SET column = 'value' WHERE column2 = 'foo'

適切なDBでクエリを実行します。上位選択でポイントされているDBに関係なく。

しかし、トリガーを使用して同じことを行おうとすると、上部の選択が正しいDBを指すようにする必要があります。そうしないと、私が抱えていたのと同じ問題に直面します。

于 2012-08-23T10:41:41.100 に答える
0

私はあなたのような微妙なエラーがありました。私はこのようなことをしました:

CREATE TRIGGER [TrigCustomerInsertDelete] 

ON [mobile].[Customers] 

AFTER INSERT, DELETE   
AS  

    select 'I'  [ACTION],* from inserted
    select 'D'  [ACTION],* from deleted

GO  

その後、次のように更新しようとしました。

ALTER TRIGGER [TrigCustomerInsertDelete]

このエラーが発生しました:無効なオブジェクト名

問題は、トリガーでスキーマを指定しなかった(dboであると考えた)が、テーブルにはスキーマが含まれていることでした。そこで、トリガーにスキーマを含めた後、エラーを見つけました。

CREATETRIGGER[DBO]。[TrigCustomerInsertDelete]

これにより、次のエラーが発生しました。トリガー'DBO.TrigCustomerInsertDelete'のスキーマがターゲットのテーブルまたはビューのスキーマと異なるため、作成できません。

私はこれが古い投稿であることを知っていますが、うまくいけば、それは他の誰かを助けるでしょう。

于 2019-01-25T00:37:56.940 に答える