超时时间已过...在我的查询中

时间:2014-02-06 09:52:32

标签: sql sql-server sql-server-2008

我有一个链接许多表的查询。因此,当执行存储过程时,它会给出...

Timeout expired. 
The timeout period elapsed prior to completion of the operation or the server is not responding.

我能为此做些什么..我可能需要增加SQL服务器的时间。我正在使用SQl 2008.你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

当一个事务持有对数据资源的锁定而另一个事务请求对同一资源的不兼容锁定时,该请求被阻止并且请求者进入等待状态。默认情况下,阻止的请求会一直等待,直到阻止程序释放干扰锁。 要获取锁信息(包括当前授予会话的锁和会话等待的锁),请将动态管理视图(DMV)sys.dm_tran_locks查询为:

SELECT -- use * to explore other available attributes
request_session_id AS spid,
resource_type AS restype,
resource_database_id AS dbid,
DB_NAME(resource_database_id) AS dbname,
resource_description AS res,
resource_associated_entity_id AS resid,
request_mode AS mode,
request_status AS status
FROM sys.dm_tran_locks;

在查询的输出中,您将获得等待共享/独占锁的spid。您可以通过观察具有相同spid's和{的行来获取所涉及的res {1}}值。 为了获得更多信息,您可以执行以下代码以获取有关阻塞链中涉及的进程的连接,会话和阻止信息。

resid

一旦你参与了spid,你可以使用-- Connection info: SELECT -- use * to explore session_id AS spid, connect_time, last_read, last_write, most_recent_sql_handle FROM sys.dm_exec_connections WHERE session_id IN(--spid found in above query); -- Session info SELECT -- use * to explore session_id AS spid, login_time, host_name, program_name, login_name, nt_user_name, last_request_start_time, last_request_end_time FROM sys.dm_exec_sessions WHERE session_id IN(--spid found in above query); -- Blocking SELECT -- use * to explore session_id AS spid, blocking_session_id, command, sql_handle, database_id, wait_type, wait_time, wait_resource FROM sys.dm_exec_requests WHERE blocking_session_id > 0; --SQL text of the connections involved in the blocking chain: SELECT session_id, text FROM sys.dm_exec_connections CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS ST WHERE session_id IN(--spid found in above query); 命令杀死spid,或者使用命令在你的存储过程中设置lock_timeout:KILL <spid>

答案 1 :(得分:1)

超时永远不会在SQL Server中,但总是在客户端调用它们。因此,如果您无法调整查询(可能是这种情况),请更改用于发出查询的应用程序中的超时。

答案 2 :(得分:1)

使用SQL Server Management Studio

配置远程查询超时选项

  1. 在对象资源管理器中,右键单击服务器并选择“属性”。
  2. 单击“连接”节点。
  3. 在“远程服务器连接”下的“远程查询超时”框中, 输入或选择0到2,147,483,647之间的值来设置 SQL Server在超时之前等待的最大秒数。
  4. See full details here