暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

sqlserver数据库进程crash

原创 日拱一卒 2024-06-11
124

一、现象

sqlserver数据库进程crash,检查时间管理器的日志,发现是oracle的某进程影响的。由于业务访问需求配置了链接服务器,访问多个oracle的数据库,因此sqlserver机器上配置了oracle的网络管理组件。
image.png

二、原因分析

经过排查,发现在配置“访问接口”时选择了“允许进程内”选项,这表明oracle 的 provider是允许运行在SQL SERVER的进程内的,这就很容易导致SQL SERVER crash。
image.png

三、解决方法

向微软提了CASE,给的修复方案如下。
1.Run  DCOMCNFG . Open Component Services > My Computer > Properties and in the Default Properties tab do the following:
① Verify that Enable Distributed COM on this computer is selected.
② Verify that Default Authentication is set to Connect.
③ Verify that Default Impersonation Level is set to Identify or Impersonate.
image.png

2.Open Component Services > MyComputer > DCOM Config > MSDAINITIALIZE and do the following:
① Right-click MSDAINITIALIZE > Properties > Security.
② Add the SQL Server service account under Launch and Activation Permissions, Access Permissions, and Configuration Permissions.
③ Provide full rights to the account.
image.png
3.Restart the SQL Server.
4.Try to use out-of-process Linked Server.

四、方案分析

1、经过查询微软官方文档,并与原厂工程师确认,取消“允许进程内”选项,会影响部分引用列的使用。
image.png

2、过测试,取消“允许进程内”选项也会影响新链接服务器创建后的对oracle业务表访问。
image.png

五、总结

我从网上找了个监控sqlserver进程的脚本,如果发现进程停止就自动拉起。

脚本放到D盘check目录下。双击check-mssql.bat 执行即可
检查的脚本:check-mssql.bat

@echo off
pushd D:\check\
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin


:start
choice /t 90 /d y /n >nul
tasklist|find /i "sqlservr.exe"
if %errorlevel%==0 (
      echo "yes" 
)   else (
      echo "No"
      start  /b restart-mssql.bat)
goto start

拉起sqlserver进程,restart-mssql.bat

@echo on
net start  mssqlserver

如果想查看后台进程是否正常,或者想杀后台进程,CMD执行下面命令,查到进程号。
手动在任务管理器中杀掉即可


最后修改时间:2024-06-12 16:26:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论