Différences entre l'Assistant Paramétrage du moteur de base de données et l'Assistant Paramétrage d'index
En plus de gérer les nouvelles fonctionnalités de base de données de MicrosoftSQL Server, l'Assistant Paramétrage du moteur de base de données se comporte différemment de l'Assistant Paramétrage d'index de MicrosoftSQL Server 2000. Bien que ces deux outils fournissent une interface utilisateur graphique et une interface d'invite de commandes, les utilisateurs pour qui l'Assistant Paramétrage d'index est un outil familier doivent tenir compte des modifications décrites ci-après.
Pour obtenir la liste complète des nouvelles fonctionnalités de l'Assistant Paramétrage du moteur de base de données, voir Fonctionnalités de l'Assistant Paramétrage du moteur de base de données.
Autorisations requises pour paramétrer les bases de données
Dans SQL Server 2000, seuls les membres du rôle de serveur fixe sysadmin pouvaient utiliser l'Assistant Paramétrage d'index pour paramétrer les bases de données. À l'aide de l'Assistant Paramétrage du moteur de base de données, dans SQL Server, les membres du rôle sysadmin peuvent toujours paramétrer les bases de données et, à présent, les membres du rôle de base de données fixe db_owner peuvent également paramétrer les bases de données dont ils sont propriétaires.
[!REMARQUE]
Lors de sa première utilisation, l'Assistant Paramétrage du moteur de base de données doit être démarré par un utilisateur qui dispose des autorisations d'administrateur système afin que l'application soit initialisée. Une fois l'Assistant Paramétrage du moteur de base de données initialisé, les membres du rôle de serveur fixe sysadmin et les membres du rôle de base de données fixe db_owner peuvent utiliser cet outil pour paramétrer les bases de données. Gardez toutefois à l'esprit que les membres du rôle db_owner ne peuvent paramétrer que les bases de données dont ils sont propriétaires. Pour plus d'informations, voir Initialisation de l'Assistant Paramétrage du moteur de base de données.
Contexte de charge de travail
L'Assistant Paramétrage d'index évaluait chaque instruction de la charge de travail à l'aide de la base de données sélectionnée pour le paramétrage, sans déterminer si l'instruction était exécutée à l'origine dans le contexte de cette base de données. In ne pouvait en outre paramétrer qu'une seule base de données durant une session de paramétrage. L'Assistant Paramétrage du moteur de base de données peut paramétrer plusieurs bases de données pendant une session de paramétrage. Il utilise les informations du script pour déterminer la base de données dans laquelle l'instruction est exécutée, et évalue l'instruction par rapport à la base de données. Les bases de données sélectionnées pour le paramétrage n'affectent pas l'évaluation des instructions.
Exemple :
La base de données AdventureWorks contient une table Person.Contact avec les colonnes FirstName et LastName.
La charge de travail TuneQuery.sql contient la requête suivante :
SELECT FirstName, LastName FROM Person.Contact WHERE LastName = 'Abercrombie'; GO
User1 se connecte par défaut à la base de données MyDB.
Dans SQL Server 2000, User1 générait ce qui suit de la ligne de commande ou suivait des étapes similaires à l'aide de l'interface utilisateur graphique de l'Assistant Paramétrage d'index :
Itwiz -D AdventureWorks -I TuneQuery.sql –o rec.sql –U <username> –P <password>
Cette méthode fonctionne dans la mesure où chaque instruction de TuneQuery.sql a été analysée dans la base de données AdventureWorks, car cela était spécifié dans la ligne de commande (-D AventureWorks). TuneQuery.sql était valide dans la base de données AdventureWorks et le paramétrage a été effectué sans aucun problème.
La syntaxe de la ligne de commande de l'Assistant Paramétrage du moteur de base de données est la suivante :
dta -s Session1 –D AdventureWorks –if TuneQuery.sql –of rec.sql –U username –P password
Étant donné que User1 se connecte par défaut à la base de données MyDB, le système définit le contexte de la base de données sur MyDB. Ensuite, l'instruction Transact-SQL est analysée dans la base de données MyDB et non dans AdventureWorks. L'instruction n'étant pas valide dans MyDB, elle est ignorée.
Pourquoi constate-t-on ce phénomène ? Si User1 exécute TuneQuery.sql à l'aide de sqlcmd ou SQL Server Management Studio sans spécifier de base de données cible, TuneQuery.sql serait exécuté dans MyDB et échouerait. L'Assistant Paramétrage du moteur de base de données imite ce comportement.
Que devez-vous faire ? Ajoutez une instruction USE <database> au script TuneQuery.sql comme suit :
USE AdventureWorks;
GO
SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName = 'Abercrombie';
GO
L'Assistant Paramétrage du moteur de base de données détecte d'abord l'instruction USE AdventureWorks et l'utilise pour définir la base de données active en tant que AdventureWorks. Il détecte ensuite l'instruction SELECT FirstName, LastName FROM Person.Contact WHERE LastName = 'Abercrombie', l'analyse dans AdventureWorks, car le contexte actuel de la base de données est AdventureWorks. Cela permet à l'Assistant Paramétrage du moteur de base de données de paramétrer correctement la base de données. Notez que si vous exécutez le script ci-dessus à l'aide de sqlcmd ou SQL Server Management Studio, l'instruction est exécutée dans AdventureWorks, car la première instruction USE <database> transforme le contexte de la base de données de MyDB en AdventureWorks.
Les instructions USE <database> peuvent être utilisées pour spécifier la base de données dans laquelle l'instruction doit être exécutée. En règle générale, elle ne sont pas nécessaires si chaque instruction utilise les noms complets de tables.
Étant donné que l'Assistant Paramétrage du moteur de base de données tente de trouver la base de données dans laquelle chaque instruction est exécutée (pour imiter l'environnement d'exécution), les informations ci-dessous sont essentielles pour comprendre comment il gère les différents types d'entrées.
Charge de travail SQL File/Inline
Comme indiqué dans la section précédente, l'Assistant Paramétrage du moteur de base de données utilise les instructions USE <database> qui précèdent une requête Transact-SQL pour identifier la base de données dans laquelle la requête doit s'exécuter. Il examine l'entrée à partir de la première instruction du fichier de script Transact-SQL. Il commence par supposer que la base de données active est la base de données par défaut. La présence des instructions USE <database> modifie le contexte de la base de données actuelle dans lequel les instructions sont analysées.
Fichiers de trace et tables de trace
L'Assistant Paramétrage du moteur de base de données imite la relecture du SQL Server Profiler lorsqu'il parcourt le fichier de trace. Il utilise les informations suivantes des fichiers de trace dans l'ordre indiqué :
Si le fichier de trace contient des événements dont la colonne DatabaseName est remplie, l'Assistant Paramétrage du moteur de base de données utilise ces informations pour déterminer la base de données dans laquelle les événements ont été exécutés.
Si la colonne DatabaseID du fichier de trace est remplie, l'Assistant Paramétrage du moteur de base de données utilise ces informations pour déterminer la base de données dans laquelle cet événement a été exécuté. Il interroge le catalogue système pour trouver le nom de la base de données correspond à DatabaseID.
[!REMARQUE]
Si une base de données a été détachée, attachée, supprimée ou créée après la collecte d'une trace, les mappages de DatabaseID et DatabaseName peuvent être différents que lorsque le fichier de trace a été créé. L'Assistant Paramétrage du moteur de base de données ne peut pas déterminer ces informations. Si cette situation se produit, vous devez supprimer la colonne DatabaseID de la trace pour empêcher l'Assistant Paramétrage du moteur de base de données de paramétrer une mauvaise base de données.
- Si les colonnes DatabaseName et DatabaseID ne sont pas présentes dans la trace, l'Assistant Paramétrage du moteur de base de données choisit la base de données à utiliser avec chaque instruction comme il le fait avec les scripts Transact-SQL pour chaque colonne SPID du fichier de trace. Si la colonne SPID n'est pas présente, la détermination de la base de données est effectuée exactement de la même manière que pour les fichiers de script Transact-SQL.
L'Assistant Paramétrage du moteur de base de données utilise également les informations de connexion (comme dans la relecture du SQL Server Profiler) lors de l'analyse de chaque instruction. Les bases de données par défaut sur le serveur peuvent changer selon les valeurs de la colonne LoginName qui apparaissent dans le fichier de trace.
[!REMARQUE]
Si une connexion présente dans la trace n'existe plus dans le système, l'Assistant Paramétrage du moteur de base de données ignore cet état de fait et utilise par défaut celle qui effectue actuellement le processus de paramétrage. Si cette situation se produit, un message est écrit dans le journal de paramétrage de l'Assistant Paramétrage du moteur de base de données.
Limites de la durée du paramétrage
L'Assistant Paramétrage du moteur de base de données vous permet de spécifier une durée de paramétrage limitée ou illimitée. Cette fonctionnalité n'était pas disponible dans l'Assistant Paramétrage d'index. Pour plus d'informations, voir Limitation du nombre d'événements et de la durée du paramétrage.
Voir aussi