问题描述
我用c#做了一个软件,连接的数据库是服务器在美国的sqlserver数据库,有一些存储过程比如update,需要大概两分钟才能完成,但是服务器似乎只提供不超过1分钟的连接时间,超过1分钟连接自动断开,这导致许多存储过程没有办法完成,请问有没有办法在程序里设置连接时间?另外update存贮过程如下,高手没有没有办法改一下以缩短运行时间:谢谢UPDATEASETCusip=derive.Cusip,Ticker=derive.Ticker,Id=derive.IdFROM(SELECTv.Ticker,v.Cusip,v.Id,v.ISINFROM(SELECTCusip,SymbolTicker,Id,ISINFROMRawData..FundShareClass)vINNERJOIN(SELECTId,Cusip,Ticker,ISINFROMAWHEREFamilyName='AllianceBernstein'ANDYear='2008'ANDMonth='June'ANDSource='International')rONv.ISIN=r.ISIN)derive--------------------这里不太花时间WHEREA.FamilyName='AllianceBernstein'ANDA.Year='2008'ANDA.Month='June'ANDA.Source='International'ANDA.ISIN=derive.ISIN--------------------似乎大部分时间花在这里
解决方案
解决方案二:
如果对方服务器设置了超时时间我们也没有办法~~~还是找找更新慢的原因,要1,2分钟来更新也确实慢了一点,考虑一下使用存储过程
解决方案三:
commandtimeout=120;这样为2分钟,你可以加长
解决方案四:
连接字符串有TimeOut属性,直接设定
解决方案五:
当然了问题就是INNERJOIN把多个表连接在一起是一个耗时的操作,建议对那些经常用到的信息集中存放在一个表中可以通过视图访问子表~1
解决方案六:
2楼正解!