Actually, Microsoft's defrag APIs full support defragmenting SQL database
devices without first having to stop SQL services. Whether a particular
defragmenter takes advantage of this ability is a different story.
I have 7 Windows 2000 / SQL 2000 servers in our development center, and
when growing/shrinking the databases, or adding new ones, in my
experience, windows defrag utility on 2000 server does not defrag ANY
files that are in-use. The MS SQL database files, as long as SQL Server
is running, are always in use. The same is true for the Exchange
2000/2003 server database files.
Unless you are going to write a custom app to make use of the API, then
there is no point in discussing the API - Diskeeper does a great job of
packing the free space and doing defrags once you stop the service.
Putting your reply at the bottom of a usenet post would be proper and
allow us to maintain the thread readability.