无法连接自动启动服务SQL Server,手动启动时可使用。SQL Server服务尚未准
技术问答
262 人阅读
|
0 人回复
|
2023-09-14
|
TL; DR -MSSQL Service声称还没准备就绪(状态)=已启动)(请参见以下删除文本)我有C#编写的Windows服务本身将安装ServiceAccount.LocalSystem并MSSQLSERVER在中指定ServicesDependedOn。
: V3 h; w0 h7 V0 D9 R3 T2 P现在,我已经创造了它MS SQL所有必要的权限和角色(包括db_owner访问所需数据库的权限和角色,以及连接/登录的特权)。
) I" B" Y% E- l# ^6 h# y手动操作服务(通过net start或 services.msc
9 `/ W+ r; [1 S5 V, M+ w它可以正确运行,即连接到数据库。当我重新启动计算机时,该服务会导致以下异常:: c+ I7 F# L9 x3 D& |6 A
Cannot open database "xxxx" requested by the login. The login failed.Login failed for user 'xxxxx'.我没有正确配置什么?同样,当我手动操作服务时,它正常工作!!我也试过通过MS SQL Management Studio使用此帐户登录-这也可行。3 ^% j* \ ^ C
如果在评论中提出建议,我试着在尝试连接之前等待-20秒睡眠不能解决问题。
: v# }5 Z, X7 w7 n+ L* J我正在将MSSQLSERVER服务状态(通过ServiceController添加到日志中,它是正在运行。一切似乎都很好,只是8 w" J. M; {: ]
自动启动服务时登录失败' |9 O- F% ?) ^* s1 x6 M
嗯,我跟踪了几个小时。这是我发现的:
8 J, A! Z. U) D% q2 k3 P3 sSQL Server 服务(MSSQLSERVER) 声称已准备就绪 (状态=已经启动),速度很快(发出 net
" i) U! Z% c, F2 X0 q# e" gstart命令后约2-3秒)。不幸的是,预热(启动数据库、恢复等操作)在 稍后进行的 ,最多2分钟
* m! q* @+ W: i4 h(120秒!)。当然,它在预热前会拒绝连接。3 W& \$ H) C/ d9 d& S% m [
我结束了
) v$ g- c U4 w2 |* g, i5 P8 D, Ptry connect;} catch RequestAdditionalTime(); // to avoid Windows Service timeout Sleep();}在一个while循环中。
( m( e, h0 f3 X& M8 p; Y2 W/ p6 C我讨厌这种解决方案,但找不到任何更清洁的方法。! G% ?+ ]* q- I- Z
如果有人知道如何正确执行操作,请回答。. [5 Z+ B! M; B; V7 L% a+ y& [
1 N3 x) r3 R, J' _* T! F
解决方案:
+ X/ Q' S) S4 \4 Q+ z 对我来说,唯一有效的解决方案就是不中继服务状态,每隔10秒就可以重试连接到服务器。 |
|
|
|
|
|