在我意外地在任务管理器中结束了一些与SQL Server相关的任务后,我无法连接到我的本地服务器。
我发现我的SQL Server代理没有运行,无法让它运行,下面是显示的消息。
有关解决问题的想法吗?
2016-02-25 22:35:09 - ? [100] Microsoft SQLServerAgent version 12.0.2000.8 (X64 unicode retail build) : Process ID 8736
2016-02-25 22:35:09 - ? [495] The SQL Server Agent startup service account is NT AUTHORITY\LOCAL SERVICE.
2016-02-25 22:35:09 - ? [393] Waiting for SQL Server to recover database 'msdb'...
2016-02-25 22:35:09 - ! [298] SQLServer Error: 229, The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (DisableAgentXPs)
2016-02-25 22:35:09 - ! [000] The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (Error 229)
2016-02-25 22:35:09 - ! [298] SQLServer Error: 229, The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (DisableAgentXPs)
2016-02-25 22:35:09 - ! [000] The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (Error 229)
2016-02-25 22:35:09 - ? [098] SQLServerAgent terminated (normally)
答案 0 :(得分:0)
根据Sql Agent日志文件中的错误消息,似乎SQL引擎至少正在启动。否则,您将看不到有关执行权限被拒绝的消息(相反,您可能会看到一些关于无法联系服务器的消息)。
您现在需要做的是:授予用于运行SQL代理所需权限的用户帐户,或切换到已拥有这些权限的帐户。
您可以从日志文件中看到当前使用的帐户是NT AUTHORITY / LOCAL SERVICE。要将用户帐户更改为其他帐户:打开控制面板 - >管理 - >单击服务,右键单击SQL Server代理服务,选择“属性”,单击“登录”选项卡,然后更改为其他用户帐户。
授予现有帐户的权限:打开SQL Server Management Studio,使用工作帐户登录数据库。导航到安全性 - >登录,右键单击当前运行SQL Server代理的用户的名称,然后选择属性....以获取运行代理的绝对最低权限,前往用户映射,选择MSDB数据库,然后选择一个SQL代理固定帐户(as described here)。 (或者,您可以选择服务器角色,将其设置为系统管理员并将其称为一天 - 但前提是您不太关心此服务器上的安全性...)
答案 1 :(得分:0)
请始终使用 SQL Server 2008 Configuration Manager 打开SQL服务。切勿使用Windows服务打开SQL服务。
答案 2 :(得分:0)
感谢大家回答我的问题!
我最终通过卸载并重新安装它来解决问题。
这次,我继续使用控制面板>节目和特征>并选择在Microsoft SQL Server 2014上卸载,不确定为什么它不能以我之前的重新安装方式工作,但现在可以使用了!
答案 3 :(得分:0)
只是添加到经验教训清单......
Sql Server配置管理器 - >别名
在某些文档中,尝试创建ODBC文件连接(仅用于屏幕截图),实际上还创建了许多别名,将所有连接重定向到奇数位置。
删除所有别名(除非你知道自己在做什么,或者在e dev / test系统上,否则不要这样做)实际上有所帮助。