14

I need to move a database log file to a new partition without taking the database offline.

The normal way of doing this would be to detach the DB, move the log file then reattach the db.

Is it possible to do this without taking the database itself offline and if so how?

16

There is no way to do this with an online database.

When you move a database file (ALTER DATABASE ... MODIFY FILE), you even get the following message:

The file "YourFile" has been modified in the system catalog. The new path will be used the next time the database is started.


The normal way of doing this would be to detach the DB, move the log file then reattach the db.

That's not the "normal" or accepted way I would do it. To move database files, I do the following:

  1. Run an ALTER DATABASE command to change the location of the file(s)
  2. Take the database offline
  3. Physically move the file(s) to the new location specified in step #1
  4. Bring database online

See this reference on TechNet: Move User Databases

3

According to the reference on TechNet Move User Databases from Thomas Stringer's answer, if you want to move the files without stopping the whole SQL Server instance (following the "Planned Relocation Procedure"), the order should be:

ALTER DATABASE database_name SET OFFLINE;
... move the file(s) to new location
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
ALTER DATABASE database_name SET ONLINE;

Note the OFFLINE first; afterwards move the files and tell SQL Server about the new location(s).

If you do need to take the whole SQL Server instance down (see the procedure for "Relocation for Scheduled Disk Maintenance"), it is best to modify the file locations first so that when the instance is restarted, there is no issue finding the files in the new locations.

1

I know this is an old question but can't you just add a second log file (which is then used by the DB instead of the original) in the new location then shrink/remove the original?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.