2008-09-17 8 views
1

Dans SQL Server 2005, un instantané d'une base de données peut être créé pour permettre l'accès en lecture seule à une base de données, même lorsque la base de données est en mode "recovery pending". Un exemple d'utilisation de cette fonctionnalité est la création d'une base de données de rapports faisant référence à une copie d'une base de données de production, qui est conservée en cours via l'envoi de journaux.SQL 2005 Snapshot Security

Dans ce scénario, comment puis-je implémenter la sécurité sur la base de données "instantané" différente de la base de données source "production"? Par exemple, dans la base de données de production, tous les accès aux données s'effectuent via des procédures stockées, tandis que les utilisateurs de la base de données instantanée peuvent sélectionner une table dans la base de données à des fins de génération de rapports. Le problème que je vois est que la sécurité de la base de données instantanée est héritée de la base de données source, et ne peut pas être modifiée car les instantanés sont strictement en lecture seule.

Répondre

1

Êtes-vous en mesure de gérer les autorisations sur cette base de données? Est-ce que l'ajout d'un utilisateur séparé ayant uniquement accès en lecture à une base de données serait suffisant pour ce type de scénario? Il peut s'agir d'un utilisateur en lecture seule sur la base de données principale, mais il n'est utilisé efficacement que sur la base de données instantanée snapshot.

c.-à-d. Ajoutez un nouvel utilisateur, readerMan5000 qui n'a qu'un accès select, à la base de données en question. Ensuite, demandez aux utilisateurs de s'authentifier via ces nouvelles informations d'identification.

Note aux futurs commentateurs, vous pouvez lire: http://www.simple-talk.com/sql/database-administration/sql-server-2005-snapshots/ ou http://msdn.microsoft.com/en-us/library/ms187054(SQL.90).aspx avant d'ouvrir ta grande bouche comme moi. :)

0

Vous ne pouvez pas modifier les autorisations après avoir pris l'instantané, mais voici une solution de contournement: au lieu de les obliger à accéder directement aux tables, demandez-leur d'utiliser des vues à la place. Si les vues ne sont utilisées que pour la création de rapports, vous pouvez définir une sécurité stricte dans la base de données d'origine, puis demander aux utilisateurs d'afficher ces vues dans l'instantané. Vous devrez restreindre l'accès aux tables sous-jacentes si vous voulez que ce soit efficace.