如何确定服务器上是否正在使用SQL Server ldf日志文件?

我有一个SQL Server ldf文件,它的大小非常大,为190千兆字节。 我很确定这只是一个旧的SharePoint内容数据库中不再存在的数据库服务器上的剩余部分,但是我希望在我使用这个数据库服务器之前能够绝对确定。 我的服务器上有几十个数据库。 我怎样才能最轻松地validation这个ldf文件是否以某种方式在这台服务器上使用? 我是降级使用SSMS并手动检查每个数据库?

那么,不推荐的方法是尝试重命名文件系统上的.ldf文件。 如果日志文件确实用于为当前正在运行的SQL Server数据库提供服务,那么您将无法重命名该文件。

推荐的方法是检查sys.database_files目录视图以便识别/定位有问题的日志文件。

下面的一些事情应该做到这一点…..

Select file_id, name, state From sys.database_files Where Type = 1 and name='logFileName' 

有关sys.database_files目录视图的详细信息,请参阅以下书籍联机参考:

http://msdn.microsoft.com/en-us/library/ms174397.aspx

这里有一个快速和肮脏的脚本,将遍历所有的数据库,并寻找您的文件。 只需将@FileToFind的值replace为相关文件的名称即可。 如果在最终结果集中没有得到结果,那么该服务器没有使用你的文件。 如果你从这里得到一个结果,那么这就是使用该文件的数据库。

 DECLARE @CurrentDB sysname DECLARE @SQL NVARCHAR(1000) DECLARE @FileToFind NVARCHAR(260) SET @FileToFind='master.mdf' CREATE TABLE #TmpDBTable ( DBName sysname, FileName NVARCHAR(260) ) DECLARE ALLDBS CURSOR FOR SELECT NAME FROM sys.databases OPEN ALLDBS FETCH NEXT FROM ALLDBS INTO @CurrentDB WHILE @@FETCH_STATUS=0 BEGIN SET @SQL='use ' + @CurrentDB + ';insert #TmpDBTable select '''+@CurrentDB+''',physical_name from sys.database_files where physical_name like ''%'+@FileToFind+'%''' EXEC sp_executesql @SQL FETCH NEXT FROM ALLDBS INTO @CurrentDB END CLOSE ALLDBS DEALLOCATE ALLDBS SELECT * FROM #TmpDBTable DROP TABLE #TmpDBTable 

如果您认为这是一个不活动的数据库,该日志文件上的时间戳(该资源pipe理器放在它上面)应该过时吗? 或者这是非常错误的信息? 我是一个偶然的dba,fyi