2010-02-23 17 views
5

J'ai capturé une trace (modèle: tsql_replay) sur notre serveur de production pour une base de données spécifique (filtrée par le nom de la base de données). J'aimerais le rejouer sur notre serveur de test, mais bien sûr, l'identifiant de la base de données est différent sur le serveur de test. Jusqu'ici, j'ai essayé de charger le fichier de trace dans une table et de modifier le databaseid avec une requête de mise à jour (voir ci-dessous), mais Profiler me donne une erreur en essayant de le rejouer (événements manquants, etc.). Si j'ouvre le fichier de trace directement, cela me permet de le rejouer. Donc, d'une manière ou d'une autre, soit charger dans une table ou changer l'ID de base de données gâche quelque chose.Comment relire une trace SQL Profiler sur une base de données différente?

Quelle est la procédure correcte pour capturer une trace pour la relecture et changer la base de données sur laquelle elle doit être rejouée?

select * into trace_table 
from fn_trace_gettable('f:\trace\trace100222.trc', default) 
go 
update trace_table 
set databaseid = 47 
where databaseid = 16 
+0

-t-il résolu votre problème? Si oui, veuillez marquer comme ayant répondu. –

Répondre

3

Vous devez créer la trace et l'enregistrer comme fichier XML Trace pour Replay après, l'ouverture du XML et de modifier l'ID de base de données sur le XML Trace.

Méfiez-vous que si vous tracez d'un SQL 2008 à SQL 2000, vous ne pouvez pas définir la date de fin et l'heure, car il y aura une erreur ODBC DateTime.

Mais à part cela cela fonctionne, normalement.

0

Je n'ai eu aucune difficulté à lire les fichiers de trace réguliers (.trc). Ils ne doivent pas nécessairement être XML. Ceci est dans SQL 2005. Vous devez être sûr de capturer certains événements afin d'être capable de rejouer une trace. Le modèle de trace TSQL_Replay vous y aidera. Lors de la relecture, j'ai tendance à désactiver les SPID du système Replay dans l'onglet Advanced Replay Options de la boîte de dialogue replay. J'ai également tendance à enregistrer les résultats dans un tableau pour une analyse ultérieure.

1

C'est deux ans plus tard, mais j'avais exactement le même problème. Voici comment je l'ai résolu:

  1. Démarrer SQL Server Profiler
  2. Ouvrez le fichier de trace
  3. Replay le fichier de trace pour le confirmer fonctionne
  4. Enregistrez le fichier de trace comme une table (T1)
  5. Mettre à jour la table si nécessaire (dans mon cas, je devais mettre à jour LoginName à un utilisateur local)
  6. Ouvrir la table de trace mise à jour
  7. Rejeter le tr as

A noter, j'ai couru une trace sur le processus d'enregistrement du fichier de trace à une table de trace et Profiler fait beaucoup plus que d'utiliser fn_trace_gettable pour écrire le contenu de trace dans une table. Il semble également ajouter divers attributs internes à la table de trace à travers une série de commandes de sp_cursor qui ressemblent à ceci:

exec sp_cursor 180150003,4,0,N'[dbo].[T1]',@EventClass=65528,@BinaryData=0xFFF...