我想调试 SQL Server 中的 SQLCLR 存储过程。我一直在尝试在 VS2015 社区和最近安装的 VS2017 社区版本中调试 SP,但没有成功。我很确定问题出在附加到 SQL Server 上,但正如我所做的一切,我可以在网上找到提到的但无济于事。
在 SQL Server Express LocalDB 中创建数据库项目时一切正常。如果我更改连接字符串以使用我的 Developer Edition SQL Server,则会出现错误。我做了以下事情:
- 我创建了一个新数据库。我是服务器的唯一用户,它驻留在我用于 Visual Studio 的同一台台式机上。
在 Visual Studio 中,我创建了一个简单的数据库项目,使用简单的方法将一些文本发送到输出管道。
[Microsoft.SqlServer.Server.SqlProcedure] public static void mytest () { SqlContext.Pipe.Send("in clr Craig1"); }
- 我在项目属性中编辑了目标连接字符串以连接到新数据库,并在按下连接按钮时成功建立了连接。连接字符串为我使用了 Windows 身份验证,用户与数据库所有者相同。
- 我构建并部署了解决方案并检查了 SQL 对象资源管理器以确保部署了 SP。是的。
- 我选择了服务器,然后右击选择了“允许 SQL/CLR 调试”。我再次检查以确保它确实已设置。
- 我选择了存储过程并单击鼠标右键,选择了“调试过程...”
- 已显示调试脚本。我走到执行 SP 的行,然后按 F11 进入。此时我看到了以下内容:
- 我按下了附件并显示了以下错误:
此后,程序执行并执行管道功能,但它不让我进行附件和调试。
对我做错了什么有什么想法吗? 谢谢 克雷格
最佳答案
您可能只需要使用“以管理员身份运行”来启动 Visual Studio。我不认为我在运行 Windows 8 时需要这样做,但我现在运行的是 Windows 10 并且绝对需要“以管理员身份运行”。我猜你不能以其他方式附加到其他人的进程(我的 Developer Edition 使用“SQL Server”的服务帐户运行,但 LocalDB 始终作为启动它的登录名运行,通常是你自己)。我没有测试过以我自己的身份运行 Developer Edition 是否仍需要“以管理员身份运行”,或者以“本地系统”身份运行 Developer Edition 会如何影响此行为。
关于c# - 无法附加到 SQL Server 以调试 SQLCLR 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42785521/