MSSQL常用SQL语句

0    187    1

Tags:

👉 本文共约8478个字,系统预计阅读时间或需32分钟。

目录

SQL Server对象查询(只查询当前数据库)

检查数据库完整性

通过加tablock提高速度

数据库重命名、修改恢复模式、修改用户模式

数据库重命名

设置数据库为完整恢复模式

只允许一个用户访问数据库

只有sysadmin,dbcreator,db_owner角色的成员可以访问数据库

多用户模式

移动文件

–由于在SQL Server中文件组、文件不能离线
–所以必须把整个数据库设置为离线

–修改文件名称

–把原来的文件复制到新的位置:‘D:\WC\WC_FG8.NDF’

–设置数据库在线

扩展数据库:增加文件组、增加文件、修改文件大小、修改文件的逻辑名称

添加文件组

添加数据文件

添加日志文件

修改数据文件的大小,增长大小,最大大小

修改数据文件或日志文件的逻辑名称

设置默认文件组、只读文件组

–设置默认文件组

–设为只读文件组
–如果文件已经是某个属性,不能再次设置相同属性

收缩数据库、收缩文件

–收缩数据库

–收缩文件

重新生成索引

查看实例名

查看数据库属性

查看数据库恢复模式

查看日志空间

系统函数

app_name()函数返回当前从SQL Server请求数据的应用程序名称。
SYSDATETIME()函数返回SQL Server上的当前时间。
host_name()函数确定是哪台工作站正在连接到SQL Server。
system_user函数提供正在连接的用户的登陆名
db_name()告诉你连接是哪个数据库

如:select app_name()

查看数据文件

查询缓存中具体的执行计划,及对应的SQL

–查看缓存中具体的执行计划,及对应的SQL语句

查询缓存的各类执行计划,及分别占了多少内存

–查看缓存的各类执行计划,及分别占了多少内存

查询当前数据库缓存的所有数据页面,哪些数据表,缓存的数据页面数量

查询SqlServer总体的内存使用情况

查询SQLSERVER内存使用情况

看BUFFER POOL中,都缓存了哪些表(当前数据库)的数据

查看缓存中重用次数少,占用内存大的查询语句(当前缓存中未释放的)–全局

查看当前占用 cpu 资源最高的会话和其中执行的语句(及时CPU)

查询会话中有多少个worker在等待

查看当前数据库用户连接

查看数据库大小

查看数据库可用大小,已使用大小

SQL优化相关、执行时间

查看索引碎片

也可由sys.dm_db_index_physical_stats视图来代替。

对上面的结果说明:

统计信息描述
扫描页数表或索引中的页数。
扫描区数表或索引中的区数。
区切换次数遍历表或索引的页时,DBCC 语句从一个区移动到另一个区的次数。
每个区的平均页数页链中每个区的页数。
扫描密度 [最佳计数:实际计数]百分比。 这是“最佳计数”与“实际计数”的比率。 如果所有内容都是连续的,则该值为 100;如果该值小于 100,则存在一些碎片。 “最佳计数”是指所有内容连续链接时理想的盘区更改次数。 “实际计数”是指实际的盘区更改次数。
逻辑扫描碎片扫描索引的叶级页时返回的出错页的百分比。 此数与堆无关。 对于出错页,分配给索引的下一个物理页不是当前叶级页中的下一页指针所指向的页。
区扫描碎片扫描索引的叶级页时出错区所占的百分比。 此数与堆无关。对于出错区,包含当前索引页的区在物理上不是包含上一个索引页的区的下一个区。 注意:如果索引涉及多个文件,则此数字毫无意义。
每页的平均可用字节数扫描的页上平均可用字节数。 此数字越大,则页的填充程度越低。 如果索引不会有很多随机插入,则数字越小越好。 此数字还受行大小影响:行越大,此数字就越大。
平均页密度(满)页的平均密度,以百分比表示。 该值会考虑行大小。 因此,该值可以更准确地指示页的填充程度。 百分比越大越好。

–如果指定了FAST,那么则显示以下几列信息:

  • 扫描页数
  • 区切换次数
  • 扫描密度 [最佳计数:实际计数]
  • 区扫描碎片
  • 逻辑扫描碎片

–如果指定了 TABLERESULTS,会多显示以下几列信息

统计信息描述
Object Name处理的表或视图的名称。
ObjectId对象名的 ID。
IndexName处理的索引的名称。 堆的 IndexName 为 NULL。
IndexId索引的 ID。 堆的 IndexId 为 0。
Level索引的级别。 级别 0 是索引的叶(或数据)级。堆的级别为 0。
Pages组成某个索引级别或整个堆的页数。
Rows某个索引级别上的数据或索引记录数。 对于堆,此值是整个堆中的数据记录数。对于堆,此函数返回的记录数可能与通过对堆运行 SELECT COUNT(*) 返回的行数不匹配。 这是因为一行可能包含多个记录。 例如,在某些更新情况下,单个堆行可能由于更新操作而包含一条前推记录和一条被前推记录。 此外,多数大型 LOB 行在 LOB_DATA 存储中拆分为多个记录。
MinimumRecordSize某个索引级别或整个堆中的最小记录大小。
MaximumRecordSize某个索引级别或整个堆中的最大记录大小。
AverageRecordSize某个索引级别或整个堆中的平均记录大小。
ForwardedRecords该索引级别或整个堆中的被前推记录数。
Extents某个索引级别或整个堆中的区数。
ExtentSwitches遍历表或索引的页时,DBCC 语句从一个区移动到另一个区的次数。
AverageFreeBytes扫描的页上平均可用字节数。 此数字越大,则页的填充程度越低。 如果索引不会有很多随机插入,则数字越小越好。 此数字还受行大小影响:行越大,此数字就越大。
AveragePageDensity页的平均密度,以百分比表示。 该值会考虑行大小。 因此,该值可以更准确地指示页的填充程度。 百分比越大越好。
ScanDensity百分比。 这是“BestCount”与“ActualCount”的比率。 如果所有内容都是连续的,则该值为 100;如果该值小于 100,则存在一些碎片。
BestCount所有内容连续链接时的区更改理想数量。
ActualCount区更改实际数量。
LogicalFragmentation扫描索引的叶级页时返回的出错页的百分比。 此数与堆无关。 对于出错页,分配给索引的下一个物理页不是当前叶级页中的下一页指针所指向的页。
ExtentFragmentation扫描索引的叶级页时出错区所占的百分比。 此数与堆无关。 对于出错区,包含当前索引页的区在物理上不是包含上一个索引页的区的下一个区。 注意:如果索引涉及多个文件,则此数字毫无意义。

– 如果索引的碎片非常多,可选择以下方法来减少碎片:

  • 删除然后重新创建聚集索引。
    重新创建聚集索引将重新组织数据,从而使数据页填满。 填充度可以使用 CREATE INDEX 中的 FILLFACTOR 选项进行配置。 这种方法的缺点是索引在删除/重新创建周期内为脱机状态,并且该操作是一个整体,不可中断。 如果中断索引创建,则不能重新创建索引。
  • 对索引的叶级页按逻辑顺序重新排序。
    使用 INDEX…REORGANIZE 对索引的叶级页按逻辑顺序重新排序。 由于此操作是联机操作,因此语句运行时索引可用。 此外,中断该操作不会丢失已完成的工作。 这种方法的缺点是在重新组织数据方面没有聚集索引的删除/重新创建操作有效。
  • 重新生成索引。
    使用 REBUILD 和 ALTER INDEX 重新生成索引。

–索引的碎片级别可通过以下方式确定:

  • 比较“区切换次数”和“扫描区数”的值。
    “区切换次数”的值应尽可能接近“扫描区数”的值。 此比率将作为“扫描密度”值计算。 此值应尽可能的大,可通过减少索引碎片得到改善。
  • 了解“逻辑扫描碎片”和“区扫描碎片”的值。
    “逻辑扫描碎片”和“区扫描碎片”(对于较小的盘区)的值是表的碎片级别的最好指标。 这两个值应尽可能接近零,但 0% 到 10% 之间的值都是可接受的。

具体例子

  • A. 显示表的碎片信息
    下面的示例将显示 Employee 表的碎片信息。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复