Microsoft SQL Server 2008 R2 这是我使用的数据库。我是从接口中取到一个XML,然后将XMl传到存储过程中,在存储过程中针对XML进行操作。但是由于XML的数据量过大,因此会出现如标题一样的错误。 我百度了 看到网友说在连接字符串上写Connection Timeout=0; 我加了这个。我的sql连接字符串如下“server=service;UserID=sa;Password=123;database=test;Connection Timeout=0;Connection Reset=FALSE”
但是这样没有效果。所以求老鸟指教 看我这新手又是哪个步骤给丢了 求指教
你理解错了,Connection Timeout 是指等待连接打开的时间(以秒为单位)。默认值为 15 秒。
你现在的问题是连接已经成功了,并不是等待连接超时,你应该把那个异常给贴出来。
鉴于你提到存储过程执行周期较长,因此这里的超时是指的客户端等待服务器响应的超时,同Connection Timeout没有任何关系。
目前我还没找到如何控制TCP层面的超时设置,但是你可以尝试使用异步的方式来执行这个存储过程,在连接字符串中标记:Asynch = True,在调用时采用 BeginExecute 来执行你得存储过程。
你可以尝试用 SqlCommand.CommandTimeout 来设置超时。
在异步方法调用(如 BeginExecuteReader)过程中,CommandTimeout 属性将被忽略
因此上面两种方式应该都可以解决你的问题。
嗯 我的错误已经解决了 是我理解错误了 我那个不是连接超时 而是执行的时间太长
SqlConnection.ConnectionTimeout 属性 可以设置长一些,默认为15秒
备注
在连接字符串中使用 ConnectTimeout 或 Connection Timeout 关键字,可以设置某个连接等待超时的时间。值 0 指示无限制,在 ConnectionString 中应避免值 0,否则会无限期地等待连接尝试。
为0的时候是不受时间限制了。 我不知道是不是数据库的原因,在有的帖子上看到说sqlserver2008的时间是自动去设置的 我不知道是不是这个原因
……这家伙是只读的!!官方也说:在连接字符串中使用 ConnectTimeout 或 Connection Timeout 关键字,可以设置某个连接等待超时的时间。值 0 指示无限制,在 ConnectionString 中应避免值 0,否则会无限期地等待连接尝试。
Connection Timeout=0 修改一个大的数字看看 ,不如 1000000
这个问题不是没有连接上数据库 只是存储过程里面的数据量过大,因此一直在执行存储过程,时间太久 所以程序断开了 我想设置一个程序断开时间 使用这个属性设置吗、?
不一定是超时问题,你可以直接调用存储过程测试,把xml当作参数传过去
尝试过 现在解决了 XML的数据量大了点 直接在sql中执行存储过程也是要等很久