Forum aux questions sur SQL&Déclencheurs de connexion, défragmentation de fichier de données, et bien plus encore

Par Nancy Michell

Configuration du compte de service

Conseil : Des mots de passe plus sûrs

Le moteur SQL Server 2000 conserve deux copies de chaque mot de passe de compte de connexion SQL Server. L'une des versions est le véritable mot de passe fourni par l'utilisateur, la seconde étant le mot de passe en majuscules.

Cette méthode permet la validation non sensible à la casse des mots de passe, car un utilisateur peut ouvrir une session avec un mélange de casse ou en majuscules et se voir accorder l'accès au serveur. Cependant, cet avantage a un certain défaut. L'enregistrement des mots de passe en majuscules rend les attaques de force brute visant à deviner les mots de passe plus faciles en réduisant le nombre de mots de passe possibles.

SQL Server 2005 enregistre uniquement la copie d'origine du mot de passe. Un mot de passe entré par un utilisateur doit correspondre au mot de passe enregistré sur le serveur. Si le mot de passe ne correspond pas, l'ouverture de session échoue et l'accès est refusé à l'utilisateur. En cas d'oubli de la casse exacte des caractères du mot de passe, le mot de passe doit être réinitialisé.

En supposant que l'identifiant de compte de connexion d'un utilisateur est SQLCOMMUNITY, vous pouvez réinitialiser son mot de passe SQL Server en utilisant la commande suivante :

Use Master;
ALTER LOGIN SQLCOMMUNITY WITH PASSWORD = 'k3t9h4s8wJF7t';

Cette commande réinitialisera le mot de passe pour le compte de connexion SQL Server de SQLCOMMUNITY à « k3t9h4s8wJF7t ».

Q Dans SQL Server™ 2000, j'avais l'habitude de définir le compte de service pour le moteur et l'agent SQL Server à l'aide de l'applet Services dans les Outils d'administration. J'ai maintenant entendu dire que dans SQL Server 2005, je dois utiliser l'outil Gestionnaire de configuration. Pourquoi ne puis-je pas continuer à utiliser les outils de Windows ?

R SQL Server 2005 a été conçu pour être plus sûr que les versions précédentes. Dans de nombreux cas, les utilisateurs définissaient simplement des comptes internes, tels que LocalSystem, pour exécuter SQL Server. Mais ces comptes ont souvent plus ou moins d'autorisations sous Windows® que ce dont ils ont besoin. Vous devez créer un compte Windows sans privilèges élevés pour exécuter les services d'agent et de moteur SQL Server 2005. Si vous sélectionnez ces comptes avec le Gestionnaire de configuration, ils se verront automatiquement accorder les droits et les autorisations correctes dans SQL Server et le système d'exploitation. Si vous utilisez les outils de Windows pour gérer les services de SQL Server, vous pourriez ne pas accorder les droits corrects, ou en accorder trop.

Pour plus de détails, consultez l'astuce Modification du compte de service.

Qui ouvre une session sur mon serveur ?

Q Je veux savoir qui ouvre une session sur mon serveur et quand. Je veux également restreindre certains utilisateurs à certaines périodes et aimerais savoir comment déclencher un suivi pour dépister l'activité des utilisateurs. Est-ce que ces opérations sont possibles ?

A Oui, vous pouvez faire tout cela avec SQL Server 2005 si le Service Pack 2 est installé.

SQL Server 2005 vous permet de créer des déclencheurs de connexion qui peuvent déclencher une procédure stockée ou T-SQL en réponse à un événement LOGON. Vous pouvez utiliser un déclencheur de connexion pour vérifier et contrôler des utilisateurs en effectuant le suivi de l'activité de connexion, en limitant les connexion SQL Server ou en limitant le nombre de sessions de connexions spécifiques. Notez que l'événement est uniquement déclenché une fois la connexion authentifiée avec succès, mais juste avant que la session utilisateur soit en fait établie. Par conséquent, tous les messages provenant de l'intérieur du déclencheur (tels que les messages ou les erreurs) de l'instruction PRINT sont envoyés au journal d'erreurs de SQL Server. Si l'authentification vient à échouer pour une connexion, les déclencheurs d'ouverture de session ne seront pas déclenchés.

L'exemple suivant illustre comment vous pouvez créer un déclencheur de connexion et envoyer un message au journal d'erreurs de SQL Server dès qu'un utilisateur se connecte :

ALTER TRIGGER Ops_Login
ON ALL SERVER
AFTER LOGIN
AS
PRINT SUSER_SNAME() + ' has just logged in to ' + LTRIM(@@ServerName) + ' SQL Server at '+LTRIM(getdate())
GO

Pour afficher tous les déclencheurs définis au niveau du serveur, utilisez la requête suivante :

SELECT * FROM sys.server_triggers;

Meilleures pratiques de défragmentation

Q Quelle est la meilleure façon de réparer la fragmentation de fichier de données dans SQL Server ? Si nous utilisons les outils de défragmentation de Windows, ceux-ci traitent le fichier de données SQL comme un ensemble et ne le défragmenteront pas de façon granulaire.

R Vous pourriez sauvegarder la base de données puis la restaurer. Si vous disposez de suffisamment d'espace pour un fichier contigu, la base de données devrait être écrite de manière contiguë. Cela dit, la défragmentation des fichiers physiques ne justifie normalement pas le temps d'indisponibilité qu'elle génère. Il n'y a généralement pas beaucoup de fragmentation de toute façon. Il est beaucoup plus utile de réindexer régulièrement vos données pour réduire autant que possible la fragmentation interne. Ceci permettra de maximiser l'efficacité des lectures anticipées et la quantité de données pouvant être placée dans la mémoire tampon.

Les facteurs les plus importants pour des E/S disque efficaces sont un alignement de disque et une configuration RAID corrects, un dimensionnement des baies de disques capable de gérer la charge d'E/S et une disposition correcte des fichiers de journaux, données, TempDB et de sauvegarde. Si vous évitez d'utiliser la croissance et la réduction automatique comme méthodes principales de calibrage de taille des fichiers de données, vous réduirez le nombre de fragments de fichiers de niveau volume créés. Par exemple, le recours à 10 croissances automatiques de 500 Mo chacune ajoutera probablement 10 nouveaux fragments de fichier physiques. Par opposition, une croissance manuelle unique 5 Go en ajoutera seulement un.

Conseil : Modification du compte de service

Saviez-vous que lorsque le compte de service de SQL Server est configuré avec un compte Windows NT®, SQL Server définit les droits d'utilisateur et les autorisations de Windows sur plusieurs fichiers, dossiers et clés de Registre ? Vous pouvez également définir le compte de service SQL Server à partir de la console Services des Outils d'administration. Cependant, lorsque vous effectuez ceci avec Services, les droits et les autorisations ne sont pas définis et vous pouvez rencontrer des problèmes sérieux en raison du manque de paramètres de sécurité appropriés sur les éléments SQL Server et Windows mentionnés précédemment.

Il est donc fortement recommandé d'utiliser le Gestionnaire de configuration de SQL Server et non la console Services pour la modification de SQL Server ou du compte de service de l'agent SQL Server. Cependant, si vous avez déjà apporté des modifications au compte en utilisant la console Services, vous pouvez toujours résoudre ce problème.

Étape 1 : Appliquez des autorisations complètes sur les clés de Registre suivantes et leurs sous-clés :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>

Étape 2 : Définissez le contrôle total pour le compte de démarrage du service MSSQLServer et le service SQLServerAgent (un compte local Windows NT ou un compte de domaine Windows NT) sur ce dossier NTFS :

Drive:\Program Files\Microsoft SQL Server\<MSSQL.1>\MSSQL

Au lieu d'effectuer ceci manuellement, il est cependant recommandé d'utiliser le Gestionnaire de configuration SQL Server pour apporter des modifications aux comptes de services SQL Server/Agent.

Merci aux informaticiens Microsoft ci-dessous pour l’apport de leur expertise technique : Cary Gottesman, Saleem Hakani, Trayce Jordan, Peter Kalbach, Al Noel, Uttam Parui, Amber Sitko et Buck Woody.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.