日度归档:2018年5月15日

mssql sqlserver 数据库突然进入挂起状态


摘要:
下文主要讲述sqlserver经常突然进入”恢复等待”状态,
我们通常通过查看 sql server errorlog文件,获取相应的错误信息。


以下是其中一个数据库HRFINDB的过滤信息

2018-05-15 16:30:01.02 spid57启动数据库’testInfo’。
2018-05-15 16:30:01.12 spid57错误:17204,严重性:16,状态:
2018-05-15 16:30:01.32 spid57 FCB ::打开失败:无法打开文件E:\MSSQL12.MSSQLSERVER\MSSQL\DATA\testInfo_log.ldf(文件编号为2)。操作系统错误:32(该进程无法访问该文件,因为它正在被另一个进程使用。)。
2018-05-15 16:30:01.32 spid57错误:5105,严重性:16,状态:1.
2018-05-15 16:30:01.42 spid57发生文件激活错误。物理文件名’E:\MSSQL12.MSSQLSERVER\MSSQL\DATA\testInfo_log.ldf’可能不正确。诊断并更正其他错误,然后重试该操作。
2018-05-15 16:30:01.52 spid57错误:5170,严重性:16,状态:1。
2018-05-15 16:30:01.52 spid57无法创建文件’E:\MSSQL12.MSSQLSERVER\MSSQL\DATA\testInfo_log.ldf’,因为它已经存在。更改文件路径或文件名,然后重试该操作。

解决方法:
关闭文件的防病毒和实时扫描功能

使用DBCC PAGE检查SQL Server表和索引数据


摘要:
我读过很多关于数据库页面的文章,以及它们如何用于存储表格数据和索引数据。有什么方法可以真正查看这些信息吗?


处理方法:
sql server中未被公开的关键字 dbcc page,此关键字的功能为查看索引页和数据页中的数据
——————–
dbcc page语法简介:

DBCC PAGE
(
['database name'|database id], -- can be the actual name or id of the database
file number, -- the file number where the page is found
page number, -- the page number within the file 
print option = [0|1|2|3] -- display option; each option provides differing levels of information
) 

----例:
 
CREATE DATABASE tmpInfo
GO
USE tmpInfo
GO
CREATE TABLE test
(
 keyId int identity,info varchar(30)
)
go

insert into test (info)values('a')
insert into test (info)values('b')
insert into test (info)values('c')
insert into test (info)values('d')
insert into test (info)values('e')
insert into test (info)values('f')
insert into test (info)values('g')
insert into test (info)values('h')
go

-----例:使用dbcc 查看

DBCC IND('tmpInfo',test,-1)

mssql_sqlserver_dbcc_ind数据页查看

mssql_sqlserver_dbcc_ind数据页查看


—————-
PageFID和PagePID列分别表示页面所在的文件编号和数据所在文件内的页码。
IndexID是在sys.indexes中找到的索引’index_id。PageType指示页面的种类。
PageType = 1是数据页面,PageType = 2是索引页面,PageType = 10是维护索引本身的IAM页面。
IndexLevel是页面落在IAM结构中的级别。如果level = 0,那么这是索引的叶级页面。
我们可以看出
数据页的编号为21
—-
我们可以使用

DBCC PAGE('tmpInfo',1,21,3) with TABLERESULTS  ---获取页面相关内容
mssql_sqlserver_dbcc_page数据页查看

mssql_sqlserver_dbcc_page数据页查看

mssql sqlserver dbcc help功能简介


摘要:
下文讲述dbcc help功能。
dbcc help主要返回 dbcc所有命令形式简介
及dbcc下命令的语法简介
实验环境:sqlserver 2008 R2



dbcc help语法简介:

dbcc help(‘命令名称’|?) WITH NO_INFOMSGS
命令名称:需获取命令帮助的名称,如:checkDb opentran
WITH NO_INFOMSGS:是否显示消息信息
————————————————-

dbcc help用法举例:

DECLARE @tmp sysname;  
SET @tmp = 'CHECKDB';  
DBCC HELP (@tmp); 
go

DECLARE @tmp sysname;  
SET @tmp = 'opentran';  
DBCC HELP (@tmp)  WITH NO_INFOMSGS ; 
go

dbcc help('?');
go
mssql_sqlserver_dbcc_help关键字用法简介

mssql_sqlserver_dbcc_help关键字用法简介