我们在SQL Server 2012中设置了链接服务器来访问我们的应用数据库 "PostgreSQL"。
当我将数据从特定的链接服务器存储到临时表时,我收到了以下错误。我也试过在物理表中存储数据,但同样的错误。
查询。
if object_id ('tempdb..#quotestpremium') is not null drop table tempdb..#quotestpremium
Select * into tempdb..#quotestpremium from
(Select * from [RWPRODMAIN].[dwh001].[apps_u001].quotestpremium)a
go
错误:该表有453K记录。
**Database name 'tempdb' ignored, referencing object in tempdb.
Database name 'tempdb' ignored, referencing object in tempdb.
OLE DB provider "MSDASQL" for linked server "RWPRODMAIN" returned message "Out of memory while reading tuples.".
Msg 7399, Level 16, State 1, Line 29
The OLE DB provider "MSDASQL" for linked server "RWPRODMAIN" reported an error. The provider ran out of memory.
Msg 7306, Level 16, State 2, Line 29
Cannot open the table ""dwh001"."apps_u001"."quotespremium"" from OLE DB provider "MSDASQL" for linked server "RWPRODMAIN".**
这个表有453K记录。
如果你有类似的问题,请分享你的经验。
重启SQL Server后,情况确实好转。它创建了一个有450K+记录的临时表。它是否有任何意义或帮助,以获得以上任何细节
第三方ODBC驱动程序和Ole Db提供商是出了名的泄漏内存,SQL Server通常会在重启之间保持数周或数月。 这是一个非常糟糕的组合。 一般来说,最好在SSIS包或其他短命的外部程序中使用第三方驱动程序,并避免在SQL Server的地址空间中加载它们。
另外,你也可以定期重启SQL Server作为一种变通方法。