SQL Server 2008 删除太大的日志文件

本文详细介绍了如何使用Microsoft SQL Server Management Studio进行数据库的分离和附加操作,包括分离数据库时断开连接和更新统计信息的步骤,以及如何处理日志文件丢失的问题。

1. 数据库分离:

Microsoft SQL Server Management Studio -> 右键要分离的数据库->Tasks->Detach...->Detach Database对话框中,在你需要分离的数据库行列表中,选中“Drop Connections”和"Update Statistics",最后“OK”完成数据库分离。

http://technet.microsoft.com/zh-cn/library/ms191491.aspx

 

2. 到类似于“D:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA”目录中删除对应的数据库日志文件。

 

3. 附加数据库:

Microsoft SQL Server Management Studio -> 右键“Databases”->Attach...->Attach Databases对话框中,“Add...”要附加的数据库。->在Databa details中会提示找不到日志文件,选中这一行,然后点“Remove”按钮。最后“OK”关闭对话框。会自动生成一个500K大小的新的日志文件。

http://technet.microsoft.com/zh-cn/library/ms190209.aspx

<think>首先,用户的问题是:“我想查找使用SQL语句在SQL Server中查询日志文件大小的方法 请问SQL Server中使用SQL语句查询日志文件大小的方法”。我需要基于提供的引用信息来回答这个问题。 引用[1]、[2]、[3]和[4]是关于SQL Server中查询日志文件大小的SQL语句。让我回顾一下这些引用: - 引用[1]:提供了一个查询,返回所有日志文件的名称、类型和大小(以MB为单位): `SELECT name AS 'Log File', type_desc, size/128.0 AS 'Size in MB' FROM sys.master_files WHERE type_desc = 'LOG';` [^1] - 引用[2]:提到查询数据库的数据文件及日志文件的相关信息,使用`select * from [数据库名].[dbo].[sysfiles];` [^2],但这不是特定的日志文件大小。 - 引用[3]:提供了一个存储过程来列出所有数据库的大小,包括数据和日志文件分开显示: `CREATE PROCEDURE dbo.GetAllDatabaseSizes AS ... FROM sys.master_files mf ... GROUP BY ...` [^3] - 引用[4]:讨论了缩小日志文件,但并不直接查询大小。 用户明确要求查询日志文件大小的方法,所以我应该重点引用[1]和[3],因为它们直接相关。 我的回答需要遵循系统级指令: - 所有行内数学表达式使用$...$,但这里没有数学表达式,所以我可能不需要添加任何东西。 - 独立公式如果需要,但我这里不太涉及数学。 - LaTeX语法正确,但SQL代码不是LaTeX,我会用代码块展示SQL。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户还说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但从对话历史看,这是第一个用户的查询,没有上一次的问题。系统提示中提到“用户上一次的问题”,但这里是初始问题。所以我忽略那个部分。 回答结构: - 结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠,基于引用信息。 步骤: 1. **介绍方法**:简要说明在SQL Server中查询日志文件大小的常用方法。 2. **提供查询**:直接从引用[1]中提取查询,并解释它。 3. **可选方法**:提到引用[3]的存储过程方法。 4. **注意事项**:提醒用户确保权限等。 5. **生成相关问题**:在末尾添加相关问题。 最终回答使用中文。 生成相关问题: - 基于主题,如优化查询、其他文件类型大小等。 - 示例: 1. 如何查询SQL Server中数据文件的大小? 2. 如何缩小或管理SQL Server日志文件? 3. 有哪些工具可以监控SQL Server数据库大小? 现在,构建回答: - 开头:直接回答用户问题。 - 主体:提供SQL语句和解释。 - 结尾:添加相关问题。 完整回答草稿: --- 在SQL Server中,查询日志文件大小的常用方法是使用系统视图`sys.master_files`。以下是一个有效的SQL语句,用于获取所有日志文件的名称、类型和大小(以MB为单位): ```sql SELECT name AS 'Log File', type_desc, size/128.0 AS 'Size in MB' FROM sys.master_files WHERE type_desc = 'LOG'; ``` 这个查询通过筛选`type_desc = 'LOG'`来只返回日志文件,并将大小从页数转换为MB(因为SQL Server存储文件大小以8KB页为单位,除以128.0得到MB)[^1]。 此外,如果您想查看特定数据库日志文件大小或包括更多详细信息,可以使用引用[3]中提到的存储过程方法,它列出所有数据库的大小,包括日志文件。 注意事项: - 执行此查询需要适当的权限,如VIEW SERVER STATE。 - 大小单位为MB,可以通过调整计算来改变单位。 §§相关问题§§ 1. 如何查询SQL Server中数据文件的大小? 2. 如何监控SQL Server日志文件的增长? 3. 有哪些方法可以缩小SQL Server日志文件? --- 确保引用标识添加: - 在解释查询的来源时添加[^1],在提到存储过程时添加[^3]。 最后,相关问题部分用“§§相关问题§§”标记。 </think>### SQL Server中使用SQL语句查询日志文件大小的方法 在SQL Server中,查询日志文件大小的核心方法是利用系统视图 `sys.master_files` 或 `sys.database_files`(针对特定数据库)。以下是基于引用提供的可靠方法,逐步说明: 1. **查询所有数据库日志文件大小(服务器级别)** 使用 `sys.master_files` 视图,通过筛选 `type_desc = 'LOG'` 获取所有日志文件信息。大小以页(page)为单位存储(1页=8KB),需转换为MB: ```sql -- 返回所有日志文件的名称、类型和大小(MB) SELECT name AS 'Log File', type_desc, size/128.0 AS 'Size in MB' FROM sys.master_files WHERE type_desc = 'LOG'; ``` - **解释**:`size/128.0` 将页数转为MB(因为 $128 \times 8\text{KB} = 1\text{MB}$)。 - **权限要求**:需要 `VIEW SERVER STATE` 权限。 - **输出示例**: | Log File | type_desc | Size in MB | |-------------------|-----------|------------| | AdventureWorks_Log | LOG | 1024.00 | [^1] 2. **查询特定数据库日志文件大小(数据库级别)** 若需针对单一数据库,使用 `sys.database_files` 视图(需先切换到目标数据库): ```sql -- 切换到目标数据库(例如"MyDatabase") USE MyDatabase; GO -- 获取该数据库日志文件大小 SELECT name AS 'Log File', type_desc, size/128.0 AS 'Size in MB' FROM sys.database_files WHERE type_desc = 'LOG'; ``` - **优点**:更精确控制目标数据库[^2]。 3. **高级方法:存储过程自动列出所有数据库日志大小** 引用[3]提供的存储过程可批量输出所有数据库日志文件大小: ```sql -- 创建存储过程(只需执行一次) USE master; GO CREATE PROCEDURE dbo.GetAllDatabaseLogSizes AS BEGIN SET NOCOUNT ON; SELECT DB_NAME(mf.database_id) AS DatabaseName, mf.name AS 'Log File', 'LOG' AS FileType, CAST(SUM(mf.size) * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB FROM sys.master_files mf WHERE mf.type_desc = 'LOG' GROUP BY mf.database_id, mf.name; END; GO -- 执行存储过程查看结果 EXEC dbo.GetAllDatabaseLogSizes; ``` - **输出**:按数据库分组显示日志文件大小(MB)[^3]。 **注意事项**: - **权限**:确保账户有系统视图访问权限。 - **单位转换**:大小计算基于 $1 \text{MB} = 128 \text{ pages}$(SQL Server标准)。 - **日志管理**:若日志文件过大,可参考引用[4]的缩小方法(需谨慎操作)[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值