web-dev-qa-db-fra.com

Questions sur la version de la version Tempdb

Nous avons couru une erreur aujourd'hui:

Erreur: 3967, Gravité: 17

et de ce que je peux dire, c'est fondamentalement 'la version complète du magasin'. Cela a suscité des questions que j'ai eu du mal à répondre, comme dans mon magasin, nous n'avions jamais eu cette erreur avant:

  • S'il existe une taille maximale prédéfinie (basée sur la taille totale TEMPDB ou autre), est-ce dynamique?

  • Y a-t-il un cadre qui le rendrait dynamique si ce n'est pas?

  • Pouvons-nous configurer des alertes en fonction de cela? (C'est-à-dire des DMV à utiliser pour suivre la taille, etc.)

9
Travis

La gravité 17 indique que SQL Server a manqué d'une ressource requise. Vous voyez généralement cela lorsqu'une base de données est à court d'espace. Dans ce cas, il semble que TEMPDB est utilisé pour lire des lignes de version d'isolement d'instantané instantané engagées pour une requête nécessaire pour dépasser Templdb.

Cela pourrait être assez courant si TEMPDB a une taille maximale limitée et une requête mal écrite est tentée que, par exemple, effectue une très grande jointure croisée.

Vous pouvez utiliser cette requête pour voir la taille actuelle de la version de la version dans TEMPDB:

SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';

TechNet a un article intéressant sur l'utilisation des magasins de version à https://technet.microsoft.com/en-us/library/cc966545.aspx#edaa

cette page MSDN mentionne Erreur 3967:

Lorsque TEMPDB est sorti de l'espace, le moteur de base de données oblige les magasins de la version à rétrécir. Pendant le processus de réduction, les transactions de fonctionnement les plus longues qui n'ont pas encore générées versions de lignes sont marquées comme victimes. Un message 3967 est généré dans le journal des erreurs pour chaque transaction de la victime. Si une transaction est marquée comme une victime, elle ne peut plus lire les versions de la ligne dans la version de la version. Lorsqu'il tente de lire des versions en ligne, le message 3966 est généré et la transaction est renvoyée. Si le processus de rétrécissement réussit, l'espace devient disponible dans TEMPDB.

Aucune des pages que j'ai liées ci-dessus ne contient de conseils explicites sur la taille maximale de la version de la version dans TEMPDB, ce qui me conduit à croire que la seule limitation est la taille maximale configurée du TEMPDB elle-même, moins quel que soit l'espace utilisé dans TEMPDB pour autres objets.

7
Max Vernon