Pregunta

Estoy tratando de reducir el tamaño de mi archivo de registro de base de datos. He tratado de funcionamiento:

USE databasename 
BACKUP log databasename
WITH truncate_only 
DBCC shrinkfile (databasename_log, 1)

Me sale el mensaje de error:

  

Msg 155, nivel 15, estado 1, línea 3   'Truncate_only' no es un reconocido   opción de reserva.

Me estoy perdiendo algo?

¿Fue útil?

Solución

SQL Server 2008 ya no permite que las opciones NO_LOG / TRUNCATE_ONLY.

Para truncar el registro de transacciones, o bien tienen que realizar copias de seguridad (de verdad) o cambiar de modelo de recuperación de la base de datos simple. Este último es, probablemente, lo que realmente quiere aquí. No es necesario una recuperación completa a menos que usted está haciendo copias de seguridad de registro de transacciones regulares para ser capaz de restaurar a un punto del medio día.

Otros consejos

creo que la mejor forma de hacerlo es utilizar un script como el siguiente:

USE AdventureWorks
GO

-- Use some dynamic SQL just only not to re-write several times the name 
-- of your db, or to insert this snippet into a loop for all your databases...
DECLARE @dbname varchar(50) = 'AdventureWorks';
DECLARE @logFileName varchar(50) = @dbname  + '_log';
DECLARE @SQL nvarchar(max);
SET @SQL = REPLACE('ALTER DATABASE {dbname} SET RECOVERY FULL;', '{dbname}', @dbname);
EXECUTE(@SQL);

DECLARE @path nvarchar(255) = N'F:\BCK_DB\logBCK' + CONVERT(CHAR(8), GETDATE(), 112) + '_'
  + REPLACE(CONVERT(CHAR(8), GETDATE(), 108),':','') + '.trn';

BACKUP LOG @dbname TO DISK = @path WITH INIT, COMPRESSION;

DBCC SHRINKFILE(@logFileName);

-- determine here the new file size and growth rate:
SET @SQL = REPLACE('ALTER DATABASE {dbname} MODIFY FILE (NAME = ' + @logFileName + ', SIZE = 32000MB, FILEGROWTH = 10%);', 
    '{dbname}', @dbname);
EXECUTE(@SQL);
GO

http: // www .snip2code.com / fragmentos / 12913 / How-to-correctamente-Shrink-Log-File-para-SQL

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top