Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于解决.NET应用程序SQL Server超时问题和改进执行时间的检查表_C#_.net_Sql Server_Vb.net_Timeout - Fatal编程技术网

C# 用于解决.NET应用程序SQL Server超时问题和改进执行时间的检查表

C# 用于解决.NET应用程序SQL Server超时问题和改进执行时间的检查表,c#,.net,sql-server,vb.net,timeout,C#,.net,Sql Server,Vb.net,Timeout,用于改进.NET代码和SQL Server之间执行时间的检查表。 无论是基本的还是奇怪的解决方案,我们都很欣赏 代码: 通过更改命令和连接中的默认超时 使用存储过程调用而不是内联sql语句 通过使用活动监视器查找阻塞/锁定 SQL Server: 注意存储过程中的参数嗅探 当心数据库的动态增长 使用探查器查找任何超过100毫秒的查询/存储过程 将事务超时时间增加 通过将动态存储过程转换为静态存储过程 首先检查服务器的繁忙程度。检查正在运行的实际查询。我在设置程序时使用SQL Server Pro

用于改进.NET代码和SQL Server之间执行时间的检查表。 无论是基本的还是奇怪的解决方案,我们都很欣赏

代码:

通过更改命令和连接中的默认超时

使用存储过程调用而不是内联sql语句

通过使用活动监视器查找阻塞/锁定

SQL Server:

注意存储过程中的参数嗅探

当心数据库的动态增长

使用探查器查找任何超过100毫秒的查询/存储过程

将事务超时时间增加

通过将动态存储过程转换为静态存储过程


首先检查服务器的繁忙程度。

检查正在运行的实际查询。我在设置程序时使用SQL Server Profiler,并在可能的情况下检查所有查询是否使用了正确的联接和引用键。

一些快速查询

  • 检查服务器的处理器使用情况,看它是否太忙
  • 查看活动监视器是否正在进行阻塞/锁定
  • 网络问题/性能
    • 对于长响应时间的投诉,一个奇怪的“解决方案”是有一个更有趣的进度条。意思是,根据用户的感受来工作。Windows Vista等待图标就是一个例子。这个快速旋转的圆圈让人感觉事情进展得更快。谷歌在Android上使用了同样的技巧(至少是我见过的版本)


      但是,我建议先解决技术问题,只有在你没有选择的时候才研究人类行为。

      过去我的一些解决方案是:

    • 修复sqlcommand的默认超时设置:

      将myCommand设置为新的SqlCommand(“[dbo].[spSetUserPreferences]”,myConnection)

      myCommand.CommandType=CommandType.StoredProcess

      myCommand.CommandTimeout=120

    • 增加连接超时字符串:

      数据源=我的数据库;初始目录=匹配;持久安全信息=True;用户ID=用户;密码=密码连接超时=120

    • 增加sql server 2005中的事务超时

      在ManagementStudio的工具>选项>设计器中,即使选中/未选中“覆盖表设计器更新的连接字符串超时值”,也会增加“之后事务超时:”的值

    • 将动态存储过程转换为静态存储过程

    • 使代码调用存储过程,而不是在代码中编写内联sql语句


    • 运行探查器测量查询的执行时间。

      检查应用程序日志是否存在死锁。

      我也喜欢使用。我喜欢在他们的数据库服务器上的客户端站点上设置一个跟踪,在一个工作日的中间有15-30分钟的时间段,并记录所有查询/存储的过程,持续时间>100毫秒。不管怎样,这就是我对“长时间运行”查询的标准。

      适用于SQL Server 2000的一个奇怪的标准,今天可能仍然适用:


      确保您没有尝试在生产环境中动态增长数据库。分配额外空间和正常负载运行所需的时间会导致查询超时(增长也会如此!)

      是否使用存储过程?如果是这样,您应该注意参数嗅探。在某些情况下,这可能导致一些运行时间很长的查询。一些阅读: