2011-09-27 2 views
1

Je suis en train de créer une table de base de données SQL Server 2008 pour l'audit des actions des utilisateurs.empêche les mises à jour, supprime et tronque sur la table de base de données

Est-il possible de créer une table de base de données qui peut uniquement être insérée dans - pas de tronques, de suppressions ou de mises à jour autorisées sur les données de la table. Une option que je connais est d'utiliser un utilisateur différent avec des droits limités, mais ce n'est pas une option pour moi. Alors, en regardant d'autres options?

+2

Si un utilisateur disposant de droits limités pas une option, alors il est logique de conclure que votre utilisateur a des droits illimités. Dans ce cas, vous ne pouvez rien faire parce que l'utilisateur sera capable d'annuler n'importe lequel de vos tours, de supprimer vos triggres, de révoquer vos permissions, etc. Sinon, vous voudrez peut-être développer un peu votre situation avec des permissions. – GSerg

Répondre

3

Vous devez créer un TRIGGER qui se déclenche sur UPDATE et DELETE et renvoie une erreur:

CREATE TRIGGER user_action_update on UserActions FOR UPDATE, DELETE AS 
    BEGIN 
     RAISERROR ('Cannot modify or delete user actions', 16, 1) 
     ROLLBACK TRAN 
     RETURN 
    END 
GO 

Source: http://msdn.microsoft.com/en-us/magazine/cc164047.aspx

1

Une autre façon de le faire est d'écrire un script de création de déclenchement de la table et définissez l'action sur "INSTEAD OF" qui remplacera l'action de déclenchement (action indésirable dans votre cas) pour un autre code, ou un code nul.

INSTEAD de la propriété Indique que le déclencheur DML est exécuté à la place du déclenchement instruction SQL, par conséquent, outrepassant les actions des déclarations déclenchants.

Voici un lien dans la façon d'écrire l'instruction SQL pour la création de déclenchement:

http://technet.microsoft.com/en-us/library/ms189799.aspx

Bonne chance

  • Adrian
Questions connexes