web-dev-qa-db-fra.com

SQL Server Taille du journal virtuel

Je suis quelque peu un DBA accidentel, étant un développeur qui a hérité de quelques serveurs de base de données (2005 et 2008) de quelqu'un qui savait peu de choses sur l'administration de la base de données, et a apparemment eu moins d'intérêt à en apprendre davantage sur le sujet.

J'apprends comme je vais et essaye actuellement de trouver des fichiers journaux de transaction.

Toutes nos bases de données ont été configurées avec le modèle de récupération simple et AutoshRink. J'ai compris que l'utilisation d'AutoshRink est généralement une idée horrible, mais c'est ma compréhension, cela a été fait pour empêcher les journaux de transaction de grandir hors de contrôle. (Est-ce que AutoshRink rétrécit rétrécit le (s) fichier journal ou simplement le db?)

J'ai trouvé ceci à propos de SQL Server 2012 et je vous demandais s'il est vrai d'environ 2005 et/ou 2008, et exactement ce que cela signifie: "Lorsqu'une base de données utilise le modèle de récupération simple, le moteur de base de données tronque le journal de transaction après un point de contrôle. [. ..] Le moteur de base de données déclenche un point de contrôle automatique sous le modèle de récupération simple lorsque le journal virtuel devient à 70% complet. " Où est spécifiée la taille du journal virtuel?

Je souhaite désactiver la rétrécissement automatique sur toutes les bases de données, mais avant que je fasse cela, je dois savoir que les fichiers journaux ne se développeront pas rapidement.

Toute aide serait grandement appréciée.

8
Petter Brodin

Un seul fichier journal de transaction a à la fois une taille physique (que vous voyez sur le disque), et il est également décomposé dans le fichier physique dans des sections logiques appelées fichiers journaux virtuels (VLFS).

La croissance automatique et le rétrécissement automatique fonctionnent sur le fichier physique fichier journal de transaction.

La troncature du journal de transaction (également appelée "Codage") fonctionne sur le logique Sections du journal de transaction (VLFS) et n'affecte pas la taille du fichier physique. Cette partie est fréquemment le sujet de la confusion.

Un fichier journal doit toujours croître pour accueillir une transaction importante; Désactiver Auto-Shrink laissera le fichier journal avec sa taille maximale nécessaire, au lieu de diminuer physiquement sa taille.

Si vous n'avez pas de transactions importantes, il sera sans danger pour désactiver le rétrécissement automatique; Les fichiers journaux ne se développeront pas sans être liés auraient lieu si la base de données était en FULL ou BULK_LOGGED Et vous ne prenez pas des sauvegardes de journal de transaction.

Ce comportement est le même pour SQL Server 2005+.

6
Jon Seigel

Comme vous l'avez fait référence dans votre question, dans SQL 2005 et 2008 après le point de contrôle, le fichier journal de transaction sera également tronqué.

Ma suggestion définirait le modèle de récupération en plein intégrer et créer un travail pour prendre une sauvegarde à partir du fichier journal de transaction. Ce travail peut être programmé sur votre base de données et tronquera le journal des transactions après avoir pris la sauvegarde. Il tronquera automatiquement le fichier journal pour vous. Veuillez consulter les liens ci-dessous:

SQL Server 2005: http://technet.microsoft.com/en-us/library/ms189085 (v = sql.90) .aspx

SQL Server 2008: http://technet.microsoft.com/en-us/library/ms189085 (v = SQL.100) .aspx

2
Sky

Alors, voici ce que j'ai trouvé après avoir lu les autres réponses ici et de faire des recherches seuls:

Q: "AutoshRink fait-il rétrécir rétrécir le (s) fichier journal ou simplement le dB?" A: De ce que je comprends: oui, ça fait. AutoshRink est défini sur le niveau de la base de données et affecte tous les fichiers (vus Si vous cliquez avec le bouton droit de la souris sur la base de données -> Propriétés -> fichiers ou si vous exécutez la requête 1). Un autogrow, cependant, fonctionne sur un niveau de fichier.

Q: "Où est la taille du journal virtuel spécifiée?" R: Voir la réponse de Jon Seigel et le lien Remus posté. Pour voir la taille du journal physique et logique, utilisez la requête 2

Un problème est que si la base de données a eu un mode de récupération complète activée, devenu une grande taille, puis le mode de récupération est remplacé en simple, un point de contrôle ne sera pas déclenché comme le VLF a Autogrowne. Il est possible d'essayer de résoudre ce problème (voir la réponse de Remus pour des problèmes potentiels avec la tête/la queue des fichiers journaux) en exécutant la requête 3, ce qui réduira le journal de logfile jusqu'à la taille de la taille.

Queries :

1)

SELECT name, physical_name AS current_file_location, DB_NAME(database_id) AS dbname
FROM sys.master_files
WHERE DB_NAME(database_id) = 'mydb'

2)

DECLARE @tmpt TABLE(
    dbname VARCHAR(255),
    logsize DECIMAL,
    logspaceused DECIMAL,
    stat INT
)

INSERT INTO @tmpt
    EXEC ('DBCC SQLPERF(LOGSPACE)')

SELECT * FROM @tmpt WHERE dbname LIKE 'mydb' ORDER BY logspaceused DESC

3)

checkpoint
DBCC SHRINKFILE('logfile_name')
2
Petter Brodin