Sql server 2008 r2 具有链接服务器的sql server中发生连接超时
我从Sql Server 2008 R2以链接服务器的身份连接到Oracle 执行20-30分钟后,我发现以下错误:Sql server 2008 r2 具有链接服务器的sql server中发生连接超时,sql-server-2008-r2,oracle10g,linked-server,ora-12170,Sql Server 2008 R2,Oracle10g,Linked Server,Ora 12170,我从Sql Server 2008 R2以链接服务器的身份连接到Oracle 执行20-30分钟后,我发现以下错误: OLE DB provider "OraOLEDB.Oracle" for linked server "CBSLINKED" returned message "ORA-12170: TNS:Connect timeout occurred". Cannot initialize the data source object of OLE DB provide
OLE DB provider "OraOLEDB.Oracle" for linked server "CBSLINKED"
returned message "ORA-12170: TNS:Connect timeout occurred".
Cannot initialize the data source object of OLE DB provider
"OraOLEDB.Oracle" for linked server "CBSLINKED".
脚本:
set @query = '
INSERT INTO dbo.tbl_MyTable
(
AccNo,
BranchCode,
BranchName,
CustomerName,
ScanDate,
TranCount,
TranAmount,
AccType
)
select AccNo,BranchCode,BranchName,LongName,
'''+CONVERT(CHAR(10),@RunningDate,111 )+'''
,TranCount,TranAmount,AccType
from OPENQUERY(CBSLINKED,''select TBM.AC as AccNo,
TBM.BC as BranchCode ,CM.CNM, COUNT(*) TranCount,
SUM(TBM.AMT) TranAmount, TBM.AH as AccType,CM.CNM as LongName
,BM.BR_NM as BranchName
from BKP.T_2014 TBM
LEFT OUTER JOIN BKP.ACMST AM
ON TBM.AC=AM.AC and TBM.BC=AM.BC
and TBM.AH=AM.AH
LEFT OUTER JOIN BKP.BCMST BM
ON TBM.BC=BM.BC
LEFT OUTER JOIN BKP.CLMST CM
ON TBM.CN=CM.CNO
where TBM.AMT>=''''' +CONVERT(CHAR(50),@MinAmt,111)+ ''''' and
CM.CNM NOT LIKE ''''CENTRALISE%'''' and
TBM.NR NOT LIKE ''''%Del%'''' and
CAST(TBM.DT as DATE) = '''''+CONVERT(CHAR(10),@RunningDate,111 )+'''''
AND TBM.DC= ''''D''''
AND (TC=''''CP'''' OR TC=''''CR'''')
GROUP BY
TBM.BC,TBM.AH,
TBM.AC,CM.CNM,BM.BR_NM
'')where AccType IN (select AccTypeCode from tbl_ACCMAST where AccType IN (
select distinct AccType from RuleMaster where RuleID=6))
'
print @query
execute sp_executesql @query
及
sp_配置值“>
使用Control+鼠标滚动来放大图像我配置了两件事,它对我来说很有用 1.将远程查询超时设置为无限 2.将远程登录超时设置为2147483647 sp_配置“远程登录超时”,2147483647
去
使用覆盖重新配置
去
链接服务器有一个超时条目。另外,如果它运行了20-30分钟,然后超时,我会重新评估您的方法,并可能使用rownum值批量执行查询。@DaveBrown您可以在图像中看到,我已经使用
sp_configure“remote query timeout”将远程查询超时设置为无限长,0转到重新配置h override go
是的,但您是否也考虑过它可能在Oracle引擎中执行时超时,并将其返回SQL Server?仅仅因为链接服务器配置为允许无限超时,并不意味着Oracle会突然进入超限设置(不是说是这种情况,但是你必须考虑Oracle DB)。你的意思是说我也必须在Oracle 10g中设置连接/查询超时,我作为链接服务器连接。我不能确定这一点,但既然链接服务器设置正确,这就是我所能建议的。多年前,我们在开发Oracle box时遇到过类似的情况-一旦DBA取消了查询限制,我们就可以解决这个问题这充其量只是一个猜测,但它与信息相符。我仍然强烈敦促任何人,如果有需要那么长时间才能执行的查询,请以不同的方式执行-使用RowNum返回较小的“chunk”(有很多关于stackoverflow的示例专门针对Oracle),并以较小的数量插入它们。
sp_configure 'remote query timeout', 0
go
reconfigure with override
go