web-dev-qa-db-fra.com

Trace par défaut activé mais pas actif

Lorsque je interrogeons la configuration de la trace par défaut, il affiche activé:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

Mais quand je demande sys.traces Pour le chemin, il renvoie une jonction vide:

select * from sys.traces;

Qu'est-ce qui pourrait expliquer l'absence de la trace activée?

9
Andomar

Je dirais qu'il y a une forte corrélation entre votre événement hors spatial et la trace manquante. Notez que le sp_configure Option ne vous dit que la trace par défaut est activée, mais cela ne signifie pas qu'il fonctionne ou qu'il existe même. Notez que sys.traces n'est pas une table mais une vue:

create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)

Que fait le TABLE SYSTRACES rowset fournir? Comment ça marche? Comment sont filtrés ses résultats? Votre supposition est aussi bonne que la mienne. Il est possible que la trace soit toujours là, mais dans un état qui l'empêche d'être exposé par cette vue. Et cela peut être dans un état qui l'empêche toujours d'être démarré même après le redémarrage du service.

Tout d'abord, assurez-vous que l'emplacement de la trace par défaut dispose d'un espace suffisant, le compte de service SQL Server contient toujours des autorisations adéquates à y écrire, vous n'êtes pas soumis à des quotas d'espace, etc. Vous pouvez obtenir l'emplacement du registre:

HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\

Une fois que vous êtes sûr que SQL Server soit capable d'écrire dans ce dossier, vous pouvez désactiver et réactiver la trace par défaut:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;

Vous ne devriez pas avoir besoin de redémarrer le service SQL Server à ce stade, mais peut être un coup de pied final dans le pantalon de SQL Server si vous ne voyez toujours pas une ligne dans sys.traces. Notez que le trace_id Vous obtenez n'est pas garanti de rester à 1.

13
Aaron Bertrand

J'ai eu le même problème après le remplissage du lecteur. La trace par défaut a été activée mais ne fonctionne pas. Désactivez-la et réactivé qu'il fonctionnait immédiatement sans arrêter les services.

1
jclabonde