Je dirais qu'il existe une forte corrélation entre votre événement hors espace et la trace manquante. Notez que l' sp_configure
option vous indique simplement que la trace par défaut est activée, mais cela ne signifie pas qu'elle est en cours d'exécution ou qu'elle existe même. Notez que ce sys.traces
n'est pas une table mais une vue:
create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)
Que fournit l' TABLE SYSTRACES
ensemble de lignes? Comment ça marche? Comment ses résultats sont-ils filtrés? 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ée par cette vue. Et il 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 dispose toujours des autorisations adéquates pour y écrire, vous n'êtes soumis à aucun quota d'espace, etc. Vous pouvez obtenir l'emplacement à partir du registre:
HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\
Une fois que vous êtes sûr que SQL Server doit pouvoir é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 de ligne sys.traces
. Notez que la valeur que trace_id
vous obtenez n'est pas garantie de rester à 1.
select * from sys.traces
renvoie un ensemble de