SQL Server 压缩日志及数据库文件大小

SQL Server 压缩日志及数据库文件大小,第1张

请按步骤进行 未进行前面的步骤时 请不要做后面的步骤 以免损坏你的数据库

一般不建议做第 两步 第 步不安全 有可能损坏数据库或丢失数据 第 步如果日志达到上限 则以后的数据库处理会失败 在清理日志后才能恢复

清空日志

DUMP TRANSACTION 库名 WITH NO_LOG

截断事务日志

BACKUP LOG 数据库名 WITH NO_LOG

收缩数据库文件(如果不压缩 数据库的文件不会减小

企业管理器 右键你要压缩的数据库 所有任务 收缩数据库 收缩文件

选择日志文件 在收缩方式里选择收缩至XXM 这里会给出一个允许收缩到的最小M数 直接输入这个数 确定就可以了

选择数据文件 在收缩方式里选择收缩至XXM 这里会给出一个允许收缩到的最小M数 直接输入这个数 确定就可以了

也可以用SQL语句来完成

收缩数据库

DBCC SHRINKDATABASE(客户资料)

收缩指定数据文件 是文件号 可以通过这个语句查询到:

select from sysfiles

DBCC SHRINKFILE( )

为了最大化的缩小日志文件(如果是sql 这步只能在查询分析器中进行)

a 分离数据库:

企业管理器 服务器 数据库 右键 分离数据库

b 在我的电脑中删除LOG文件

c 附加数据库:

企业管理器 服务器 数据库 右键 附加数据库

此法将生成新的LOG 大小只有 多K

或用代码

下面的示例分离 pubs 然后将 pubs 中的一个文件附加到当前服务器

a 分离

EXEC sp_detach_db @dbname = pubs

b 删除日志文件

c 再附加

EXEC sp_attach_single_file_db @dbname = pubs

@physname = c:/Program Files/Microsoft

SQL Server/MSSQL/Data/pubs mdf

为了以后能自动收缩 做如下设置

企业管理器 服务器 右键数据库 属性 选项 选择 自动收缩

SQL语句设置方式:

EXEC sp_dboption 数据库名

autoshrink TRUE

如果想以后不让它日志增长得太大

企业管理器 服务器 右键数据库 属性 事务日志

将文件增长限制为xM(x是你允许的最大数据文件大小)

SQL语句的设置方式:

lishixinzhi/Article/program/SQLServer/201311/22266

一、SQL服务器返回最大值或最小值标志。
思路:
1、每一条记录必需要有唯一标志,一般我们称为ID。
2、找到最大值的ID,用SQL中的Max函数,与原返回表“联接”(用left jion指令),联接成一个新的字段“tMAX”,返回值为1。
3、同理,找到最小值的ID,用SQL中的Min函数,与原返回表“联接”(用left jion指令),联接成一个新的字段“tMIN”,返回值为1。
二、DELPHI中,利用ADO相关数据组件及表格控件的功能,得到SQL服务器表格中的数据,并利用表格控件的变色功能,当条件满足时变色。(如果Delphi环境自带的表格没变色功能,那就只能使用第三方表格去实现)
参考代码:
if adoquery5FieldByName('Max')value =1 then
begin
dbgrid5CanvasBrushColor :=clBlue;
DBGrid5DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
三、怎么从SQL数据库取数据,那是另外的话题。

使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地 一个小小的网站 运行若干天之后 MSSQL就会把服务器上所有的内存都吃光 此时你不得不重新启动一下服务器或MSSQL来释放内存 有人认为是MSSQL有内存泄露问题 其实不然 微软给我们了明确说明:

在您启动 SQL Server 之后 SQL Server 内存使用量将会持续稳定上升 即使当服务器上活动很少时也不会下降 另外 任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降 直到可用内存降到 至 MB 为止

仅仅出现这种状态不表示内存泄漏 此行为是正常的 并且是 SQL Server 缓冲池的预期行为

默认情况下 SQL Server 根据 *** 作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小 只要有足够的内存可用于防止内存页面交换(在 至 MB 之间) SQL Server 缓冲池就会继续增大 像在与 SQL Server 分配内存位于相同计算机上的其他进程一样 SQL Server 缓冲区管理器将在需要的时候释放内存 SQL Server 每秒可以释放和获取几兆字节的内存 从而使它可以快速适应内存分配变化

更多信息

您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server 数据库引擎使用的内存(缓冲池)量的上下限 在设置服务器内存最小值和服务器内存最大值选项之前 请查阅以下 Microsoft 知识库文章中标题为"内存"一节中的参考信息

HOW TO Determine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设置)

请注意 服务器内存最大值选项只限制 SQL Server 缓冲池的大小 服务器内存最大值选项不限制剩余的未保留内存区域 SQL Server 准备将该区域分配给其他组件 例如扩展存储过程 对象 以及非共享 DLL EXE 和 MAPI 组件 由于前面的分配 SQL Server 专用字节超过服务器内存最大值配置是很正常的 有关此未保留内存区域中分配的其他信息 请单击下面的文章编号 以查看 Microsoft 知识库中相应的文章

PRB 在使用大量数据库时可能没有足够的虚拟内存

参考

SQL Server 联机图书;主题 "服务器内存最小值和最大值的影响";"内存体系结构";"服务器内存选项";"SQL Server 内存池"

下面我们就来实战如何限制MSSQL内存使用:

第一步:打开企业管理双击进入要修改的MSSQL

第二步:在左侧MSSQL上点击右键 选择属性 d出SQL Server属性(配置)对话框

第三步:点击内存选项卡

在这里 你会看到MSSQL默认设置为使用最大内存 也就是你所有的内存 根据你的需要 设置它的最大值吧

lishixinzhi/Article/program/MySQL/201311/29533


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10768650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存