2010-08-17 4 views
0

Je fais un grand archivage de données d'un DB à un autre DB sur un serveur lié. Je copie à partir du serveur MS sql 2000 vers le serveur MS sql 2005. Cela implique de copier des millions d'enregistrements, puis de les supprimer. Tout cela se passe via un script dynamique. Je voudrais incorporer le rétrécissement du fichier journal pour ce processus, mais je ne parviens pas à obtenir DBCC SHRINKFILE pour le serveur lié. Est-ce seulement possible?Est-il possible de réduire un fichier journal sur un serveur lié à l'aide de DBCC SHRINKFILE?

Répondre

1

Vous devriez être en mesure de le faire en appelant sp_executesql par le serveur lié:

EXEC [LINKED_SERVER].MyDatabase.dbo.sp_executesql 
    @statement = N'DBCC SHRINKFILE(''LogFileName'',0)' 

Vous devriez repenser probablement réduire automatiquement le fichier journal, cependant, surtout si ce script sera exécuté si souvent que vous avez besoin pour l'automatiser. Vous feriez mieux de sauvegarder le journal ou de basculer le modèle de récupération sur Simple afin de pouvoir réutiliser l'espace. (Si cela revient à la même taille, avez-vous vraiment accompli quelque chose en le réduisant? En fait, vous pouvez aggraver les choses en introduisant par inadvertance la fragmentation du système de fichiers.)

Je ne dis pas que vous n'avez jamais besoin de rétrécir un fichier par programme, mais vouloir le faire est généralement un signe quelque chose d'autre est faux - le disque est trop petit pour votre volume attendu, vous avez le mauvais modèle de récupération, etc

Questions connexes