Je ne suis pas DBA, mais les choses étant ce qu'elles sont, je dois porter le chapeau DBA et configurer des plans de maintenance sur mon instance SQL Server.
Ainsi, depuis un certain temps, mon processus SSIS du jour au lendemain exécute une tâche d' exécution SQL pour effectuer les sauvegardes - essentiellement master.dbo.xp_create_subdir
pour s'assurer que les dossiers de destination existent, puis BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT
.
Chaque fois que cette tâche échouait, le reste du processus s'interrompait et j'obtenais une notification, et j'arrivais le lendemain matin pour remarquer que le lecteur des journaux de transactions était plein, et donc je les tronquais manuellement et avançais. .. jusqu'à ce que l'histoire se répète et que les journaux de transactions dépassent à nouveau l'espace disque disponible.
Le script "troncature manuelle" ressemble à ceci:
use Staging; alter database Staging set recovery simple alter database Staging set recovery full dbcc shrinkfile ('Staging_log', 0, truncateonly); go
Je suis donc fatigué de cela, et j'ai décidé d'essayer de faire les choses correctement à la place, et de suivre les étapes ici et de créer un plan de maintenance réel :
Le fait est que je n'ai jamais fait cela auparavant, j'ai donc quelques questions:
- La sauvegarde des journaux de transactions comme celui-ci les tronquera-t-elle automatiquement, ou dois-je faire autre chose?
- Est-il correct d'exécuter simultanément des sauvegardes de données et de journaux de transactions? Sinon, quelle est la bonne façon de procéder?
- Les fichiers de sauvegarde sont récupérés du jour au lendemain par un autre processus qui récupère tous les fichiers sur le serveur et les stocke ailleurs - serait-ce une bonne idée de faire expirer le jeu de sauvegarde après 2 jours? Dois-je les faire expirer?
- Les tâches de nettoyage suppriment respectivement les "anciens" fichiers .bak et .trn sous les sous-dossiers de
G:\Backups
. Cela a-t-il du sens? - Serait-il préférable de le faire dans SSIS, afin que je puisse faire échouer mon ETL si / quand les sauvegardes échouent? Ou mon processus ETL devrait-il même s'en soucier?
Désolé si c'est trop de questions pour un poste, si nécessaire, je modifierai et poserai plusieurs questions à la place - je pense qu'elles sont toutes étroitement liées cependant.