我有一个 SQL Server ldf 文件,大小非常大,有 190 GB。我很确定它只是旧 SharePoint 内容数据库的残留,该数据库不再存在于此数据库服务器上,但在对其进行处理之前,我希望绝对确定。我的服务器上有几十个数据库。我如何才能最轻松地验证此 ldf 文件是否以某种方式在此服务器上使用?我是否只能使用 SSMS 并手动检查每个数据库?
答案1
那么,不推荐的方法是尝试在文件系统上重命名 .ldf 文件。如果日志文件确实用于为当前运行的 SQL Server 数据库提供服务,那么您将无法重命名该文件。
推荐的方法是检查 sys.database_files 目录视图以识别/找到相关的日志文件。
按照下面的方法就可以了.....
Select
file_id,
name,
state
From sys.database_files
Where Type = 1 and name=’logFileName’
有关 sys.database_files 目录视图的详细信息,请参阅以下联机参考书籍:
答案2
这是一个快速而粗略的脚本,它将循环遍历所有数据库并查找您的文件。只需将 @FileToFind 的值替换为相关文件的名称即可。如果最终结果集中没有结果,则该服务器未使用您的文件。如果您从中得到结果,则该数据库正在使用该文件。
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
答案3
如果您认为这是一个非活动数据库,那么该日志文件上的时间戳(浏览器在其上放置的)是否应该过期?或者这是完全错误的信息?我是一名偶然的 dba,仅供参考