Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
SQL Server 2008超时过期错误_Sql_Sql Server_Sql Server 2008_Asp Classic - Fatal编程技术网

SQL Server 2008超时过期错误

SQL Server 2008超时过期错误,sql,sql-server,sql-server-2008,asp-classic,Sql,Sql Server,Sql Server 2008,Asp Classic,我有一个简单的sql调用,如:- select col1,col2 from table1 有时系统会运行以下操作:- update table1 set col3 = 'something' where col1 ='s1' and col2 ='s2' 这些查询通过在我们的服务器上运行的各种应用程序运行,它只发生在一个大约有100k行的表上 我有数百万行的表——它们没有超时,但不知道为什么在这一行上会超时 这些查询整天都在运行,没有任何问题,但有时在白天-特别是在高峰时间-它们会失败

我有一个简单的sql调用,如:-

select col1,col2 from table1
有时系统会运行以下操作:-

update table1 
set col3 = 'something' 
where col1 ='s1' and col2 ='s2'
这些查询通过在我们的服务器上运行的各种应用程序运行,它只发生在一个大约有100k行的表上

我有数百万行的表——它们没有超时,但不知道为什么在这一行上会超时

这些查询整天都在运行,没有任何问题,但有时在白天-特别是在高峰时间-它们会失败,并出现错误-超时过期-

你能告诉我我可以尝试解决这个错误吗

我需要执行某种类型的锁定吗

此外,如果一个用户正在更新注释,而系统中的其他用户尝试更新表中的同一行,是否会因为第二个用户的行被锁定以进行编辑而使其超时?是否有办法解决此问题?

我找到了答案- 因为它是旧系统中的一个表-以前的用户没有添加主键,认为其中已经有一个虚拟主键,但这是不对的

因为sql的编辑时间太长,会超时

所以我在表中制作了一个复合键,现在它工作正常了

结论-如果要处理更新、删除数据,请不要使用没有主键的表


谢谢大家的评论

您对col1和col2有索引吗?索引是什么意思你的意思是如果它是主键吗?是的,就像主键一样,你可能需要在col1和col2上使用一个复合索引(一个多列的索引),这有助于你的
更新
查询。@MichaelCapobianco主键会自动创建聚集索引。col3上有索引吗?可能是更新索引需要很长时间?我认为
ROWLOCK
会有所帮助,这意味着两次更新不会相互干扰,但会对使用该表的任何
SELECT
语句产生负面影响。不幸的是,同一行上的两个更新不可避免地相互竞争,但是如果索引按预期工作,那么查询运行的时间应该很短,因此并发更新将成为过去!结论-不要在没有主键的表中提供无条件的建议。