在日常管理维护SQL Server的时候,我们需要注意很多地方,然后有时候做起事情来也不得章法,现在就基本的原理和常见问题的解决思路,在这跟大家分享一下。
首先介绍一下SQL Server基本的运行原理。
作为一个Windows服务,SQL Server的每个实例就是一个sqlserve.exe进程。这个进程启动后会读取SQL Server实例的启动配置,检测硬件,配置内存和CPU,初始化一些SQL Server系统配置,启动数据库,连接网络。然后数据库就算正常启动了,然后客户端可以正常访问了。
这个是基本的启动过程,那在什么情况下回出现不能正常启动呢,当然介绍的都是我们可以解决的基本情况,像执行文件损坏,数据库损坏,这些不能立即解决的问题,日后在介绍。
1.SQL Server实例服务进程无法正常启动
sqlservr.exe进程在启动的时候,需要读取一些注册表的键值以及读取一些文件,然后根据这些配置做相应的动作。
那需要读取的注册表键值是哪些,一般都有什么作用呢:
1)HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer下,
Audit Level:设置SQL Server是否记录用户登录信息,也可以在Management Studio里的服务器属性设置。
Login Mode:设置SQL Server是只接收Windows账户登录,还是同时接收WIndows和SQL server账户。
2)启动参数HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\Parameters下,
SQL Server可以有很多启动参数,有些事提供分析问题用的。
下面介绍几个固定的参数:
-d 记录的是master数据库的数据文件物理位置
-l 记录的是master日志文件物理位置
-e 记录的是SQL Server错误日志文件的位置
3)网络配置信息HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\SuperSocketNetLib下,
SQL Server会侦听哪几个网络协议,以及每个网络协议的配置,也是放在注册表里。
从注册表读取SQL Server启动信息这一步可能遇到的两个问题:
1)启动账号权限问题
如果启动账号没有权限读取注册表或调用SQL Server的某些资源文件,那么SQL Server这个进程有可能无法创建,这时可能errorlog文件都无法生成。
需要解决这个问题,就是给启动账户赋予权限。
2)日志文件和文件夹访问问题
SQL Server要成功启动,必须要能正确的创建出日志文件errorlog,如果日志文件不能被创建成功,那么SQL Server也就不能启动。
有时候日志的路径不正确,即-e参数指定的位置不正确;或者某个进程将errorlog文件锁定了。
2.系统数据库无法正常启动
SQL Server服务开启后,首先就是要去启动系统数据库,如果系统数据库无法正常打开,SQL Server也不会正常启动。
3.网络配置失败
要接收客户端的连接,SQL Server必须配置好网络协议,一般是TCP/IP,Named Pipe,LPC,如果协议没有正确配置,客户端也不能正常连接到SQL Server。
SQL Server要启动的协议里,有
Shared Memory是专供本地连接通过LPC(Local Procedure Call)技术像SQL Server做的连接。
Named Pipe是客户需要通过pipe的名字和SQL Server交互,有时,需要确认errorlog里打出pipe名字就是客户端期望。
TCP/IP是SQL Server实例侦听的IP地址以及端口号。
4.用户数据无法正常启动
SQL Server启动的最后一步是打开用户数据库,如果数据库文件损坏,或者上次SQL Server关闭的时候数据库没有被正常关闭,开启用户数据库的时候可能会遇到麻烦。
5.群集环境下SQL Server资源无法保持正常在线
群集环境下安装的SQL Server,会由Windows群集服务来监控SQL Server是否正常工作。如果群集服务连不上SQL Server,就可能发生切换。管理需要监控和分析,SQL Server资源为什么不能保持在线,上次发生切换的原因是什么。
提示:Errorlog日志记录的是SQL Server在启动或运行过程中遇到的所有严重问题,所以当SQL Server遇到异常问题时,首先检查日志文件。这个文件一般保存7个,按时间由近到远的顺序,且重启SQL Server服务会生成新的errorlog文件。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。