I need to empty an LDF file before sending to a colleague. How do I force SQL Server to truncate the log?
问题:
回答1:
if I remember well... in query analyzer or equivalent:
BACKUP LOG databasename WITH TRUNCATE_ONLY
DBCC SHRINKFILE ( databasename_Log, 1)
回答2:
In management studio:
- Don't do this on a live environment, but to ensure you shrink your dev db as much as you can:
- Right-click the database, choose
Properties
, thenOptions
. - Make sure "Recovery model" is set to "Simple", not "Full"
- Click OK
- Right-click the database, choose
- Right-click the database again, choose
Tasks
->Shrink
->Files
- Change file type to "Log"
- Click OK.
Alternatively, the SQL to do it:
ALTER DATABASE mydatabase SET RECOVERY SIMPLE
DBCC SHRINKFILE (mydatabase_Log, 1)
Ref: http://msdn.microsoft.com/en-us/library/ms189493.aspx
回答3:
For SQL Server 2008, the command is:
ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
This reduced my 14GB log file down to 1MB.
回答4:
For SQL 2008 you can backup log to nul
device:
BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10
And then use DBCC SHRINKFILE
to truncate the log file.
回答5:
backup log logname with truncate_only followed by a dbcc shrinkfile command
回答6:
Another option altogether is to detach the database via Management Studio. Then simply delete the log file, or rename it and delete later.
Back in Management Studio attach the database again. In the attach window remove the log file from list of files.
The DB attaches and creates a new empty log file. After you check everything is all right, you can delete the renamed log file.
You probably ought not use this for production databases.