通过 Visual Studio 部署 SQL CLR 对象时可能会遇到超时问题

本文可帮助你解决通过 Visual Studio 部署 SQL 公共语言运行时 (CLR) 对象时发生的超时问题。

原始产品版本:SQL Server
原始 KB 数: 2011805

现象

将 SQL CLR 对象从 Visual Studio 部署到 SQL Server 时,可能会遇到如下各种错误:

  • 错误消息 1:

    错误:启动数据库上传事务失败。
    错误:无法完成操作

  • 错误消息 2:

    部署文件:TEstAssembly.dll,路径:E:\cases\CL MY\TEstAssembly\TEstAssembly\obj\Debug\TEstAssembly.dll...错误:超时已过期。 超时时间在操作完成或服务器没有响应之前已过。

但是,如果在 SQL Server Management Studio 中使用 CREATE ASSEMBLY 命令部署相同的 CLR 对象,则不会遇到任何问题。

原因

当 SQL CLR 对象太大而需要很长时间才能将其部署到 SQL Server 时,会出现此问题。 连接的默认超时值为 15 秒,查询的超时值分别为 30 秒。 部署大型程序集时,CREATE ASSEMBLY在 SQL Server 后端上执行的语句可能需要 30 秒以上才能返回,从而导致“症状部分中所述的错误。

解决方法

使用以下过程增加 Visual Studio 中的查询超时和连接超时值。

更改查询超时

  1. 在 Visual Studio IDE 中,导航到“工具”->“选项”->“数据库工具”->“查询”和“视图设计器”。

  2. 可以取消选中“取消长时间运行的查询”选项,或者将“取消”选项后的值更改为更高的值。

更改连接超时

  1. 在 Visual Studio IDE 中,通过导航到“查看服务器>资源管理器”来启用服务器资源管理器

  2. 在服务器资源管理器中,右键单击要在其中部署 CLR 对象的 SQL Server 的连接,然后选择“ 修改连接”。

  3. “修改连接”窗口中选择“高级”按钮

  4. “高级属性”窗口中,将“初始化”部分下的“连接超时”值更改为更高的值。