8

我正在使用 SQL Server 2008 R2 Express,当我从客户端 PC 使用 SQL Server 调试功能时,会发生此错误:

对象“sp_enable_sql_debug”、数据库“mssqlsystemresource”、模式“sys”的执行权限被拒绝。(Microsoft SQL Server,错误:229)

我的用户名是“HALI”,分配给我的权限是“public”和“db_Owner”,

现在在这个错误之后,我已经分配了所有可用的权限。以及所有服务器角色。

现在这个时候我收到了新的错误信息,

对 COM 组件的调用已返回错误 HRESULT E_FAIL。(mscorlib)

现在解决这个错误的方法是什么。

4

3 回答 3

7

我不确定禁用防火墙是否足够。如果用户具有系统管理员权限并且仍然收到此错误,则意味着客户端无法在调试模式下连接到服务器。检查此 TCP 和 UDP 端口是否正确打开。

SQL远程调试配置

编辑:1

我相信你一定也用谷歌搜索了很多,并试图找出错误消息。到目前为止,我发现您提到的 OP 中的错误具有误导性,并且从该错误中,我们无法判断到底是什么错误或下一步该看什么。但是正如您在评论中回复的那样,在进行更改以启用远程调试器之后;提到的错误更清楚,我觉得适当的许可仍然是一个问题。到目前为止,您可能还尝试过很多其他建议,但如果您还没有这样做,让我们再试一次:

在我提到的其中一条评论中,您尝试使用 windows 用户登录。

现在保留您已经对 TCP 端口、防火墙异常等进行的设置……在上面的链接中进行了说明。你有安装数据库服务器的 Windows 2012 服务器。和 Windows 8 Prof,您有 DB 客户端并通过 SSMS 连接。现在我相信两台机器都在同一个域中。假设域 XYZ。您必须在服务器上登录 Windows,假设它是“XYZ\HALI”,您可以使用它登录到 Windows 服务器。登录并确保登录也存在于具有系统管理员权限的 SQL SERVER 中。由于客户端机器也在同一个域中,请确保您已使用相同的用户“XYZ\HALI”登录到客户端机器。现在启动 SSMS 并选择 windows 身份验证而不是 SQL SERVER 身份验证。现在尝试开始调试 T-SQL 代码。

if client and server machines are not in the same domain then we have to register server name on client machine as Linked Server, impersonate the login/user as local and then try the debugging.

Edit:2

Login to SSMS using Windows Authentication

于 2013-10-26T02:23:08.250 回答
3

我在生成 SQL 2012 脚本并在 SQL 2008 R2 数据库中运行它后遇到了这个问题。

经过一番研究,我发现我的目标 SQL 2008 R2 运行在 32 位操作系统上,它支持最大 2GB 的文件。所以我将脚本保存为 C:\myScript.sql 并通过以下步骤在命令提示符下成功执行它:

  1. 打开命令提示符窗口。

  2. 在命令提示符窗口中,键入:

    sqlcmd -S myServer\instanceName –U yourUserName –P yourPassword -i C:\myScript.sql
    

    myServer\instanceName实例名称在哪里。提供 SQL Server 登录的用户名和密码,最后提供指示的文件路径。

  3. 按 Enter。

参考:

于 2016-02-15T13:12:32.567 回答
1

几次我遇到这个错误,它总是与防火墙有关。您是在远程服务器上工作,还是在本地计算机上工作?(顺便说一句,分配所有可能的角色时要小心。其中一些是您绝对不想要的。SQL 调试所需的角色是系统管理员 - 尝试禁用您检查的其余角色并仅分配该角色。)

调试过程总是很痛苦。这篇 ASP.NET 帖子不久前帮助了我。

于 2013-03-25T11:36:01.210 回答