好的,我们有两台数据库服务器,一台由我们拥有,一台由合作伙伴拥有。我们的合作伙伴最近遇到了一些问题,这些问题导致我们出现了大量的sql超时错误,从而导致整个系统崩溃。我们宁愿限制这些查询最多可以说20秒的时间,否则退出尝试并抛出错误(我们可以通过try / catch块捕获)。
几个问题:
由于
答案 0 :(得分:1)
愚蠢的问题 - 连接字符串中的commandTimeout足以满足我的需求。
答案 1 :(得分:0)
这些问题最好由SQL Server Resource Governor解决。资源调控器将限制工作负载可以消耗的内存和CPU的数量。您可以将服务器拆分为两个工作负载,并为每个工作负载分配50%,这样您和您的合作伙伴每个都可以消耗50%的服务器资源。这比设置CommandTimeout
要好得多(必须为每个SqlCommand单独设置,在连接字符串上设置它没有效果),因为命令超时不仅会影响双方(即滥用资源和受害者)但也为时已晚:commandTimeout只会在服务器运行缓慢后才会对作出反应。此外,一方可以通过频繁的小命令来滥用资源。