microsoft.ace.oledb.12.0 64bit的有线行为 [英] Wired behaviour of microsoft.ace.oledb.12.0 64bit

查看:130
本文介绍了microsoft.ace.oledb.12.0 64bit的有线行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们在Windows Server 2012 R2中使用SQL Server 2014 64位群集。我们有来自分布式区域的大量MS Access.mdb文件。我们使用OpenRowSet将数据从Access.mdb加载到SQL Server。在我们升级到64位服务器之前它运行良好。迁移到64位SQL Server后,我们发现Jet.4.0没有64位版本,因此我们切换到Ace.12.0 64位。升级到Ace.12.0后,64位性能已降低。测试结果有线。



SQL 2008R2 64 bit-7sec到10min

SQL 2008R2 32 bit-7sec

SQL 2014 64 bit cluster-7sec-10min

我们无法主动在32位模式下在SQL Server 2014中进行测试。



在同一台服务器上测试相同的查询。我发现重启后服务器或SQL Server SQL 2014 64bit和2008R2 32bit / 64bit需要7秒才能执行,随着时间的推移逐渐增加到64位。 64位SQL服务器上的执行时间不稳定,但32位SQL服务器需要固定的7秒才能随时执行查询。 Ace.12.0和Jet.4.0在32位模式下需要相同的时间,但Ace.12.0在64位模式下不稳定。



我们使用16核处理器,128GB RAM,2节点与SAN交换机。所有网络交换机都是千兆字节交换机。 9tb可用存储空间。



任何帮助都将受到高度赞赏。



我尝试过的:



从Openrowset中选择*('Microsoft.ACE.OLEDB.15.0','\\data\HD2016050088.mdb';' Admin';'',xxx)

从Openrowset中选择*('Microsoft.ACE.OLEDB.12.0','\\data \ HD2016050088.mdb';'Admin';'' ,xxx)

从Openrowset中选择*('Microsoft.Jet.OLEDB.4.0','\\data\HD2016050088.mdb';'Admin';'',xxx)

解决方案

我会尝试使用 BULK 选项 OPENROWSET 。特别是定义 ROWS_PER_BATCH ORDER 可能会对性能产生影响,具体取决于加载数据的位置。有关详细信息,请参阅 OPENROWSET(Transact-SQL) [ ^ ]和使用BULK INSERT或OPENROWSET(BULK ...)导入批量数据(SQL Server) [ ^ ]



如果没有显示任何内容,请尝试直接在SQL Server上执行命令。同时监视内存,磁盘,网络和CPU使用情况,以查看实际导致瓶颈的因素。您可以使用 Windows性能监视器 [ ^ ]用于收集数据。

We are using a SQL Server 2014 64 bit cluster in Windows server 2012 R2. We have huge amount of MS Access.mdb files coming from distributed areas. We use OpenRowSet for loading data from Access.mdb to SQL Server. Until we upgraded to 64bit server it was working fine. After migration to 64bit SQL Server we found that Jet.4.0 has no 64bit version so we switched to Ace.12.0 64bit. After upgrading to Ace.12.0 64bit performance has been degraded. Test result is wired.

SQL 2008R2 64 bit-7sec to 10min
SQL 2008R2 32 bit-7sec
SQL 2014 64 bit cluster-7sec-10min
We cannot take initiatives to test in SQL Server 2014 in 32 bit mode.

Tested on the same server on same query. I found that after restart either Server or SQL Server SQL 2014 64bit and 2008R2 32bit/64bit take 7 seconds to execute and it is gradually increased for 64bit as time elapsed. Execution time is not stable on 64bit SQL server but 32 bit SQL server takes fixed 7seconds to executes the query anytime. Ace.12.0 and Jet.4.0 takes the same time in 32bit mode but Ace.12.0 is not stable in 64bit mode.

We use 16core processor with 128GB RAM, 2Node with SAN switch. All network switches are gigabyte switch. 9tb usable storage.

Any help will be highly appreciated.

What I have tried:

select * from Openrowset('Microsoft.ACE.OLEDB.15.0','\\data\HD2016050088.mdb';'Admin';'',xxx)
select * from Openrowset('Microsoft.ACE.OLEDB.12.0','\\data\HD2016050088.mdb';'Admin';'',xxx)
select * from Openrowset('Microsoft.Jet.OLEDB.4.0','\\data\HD2016050088.mdb';'Admin';'',xxx)

解决方案

I would try to use BULK options for the OPENROWSET. Especially defining ROWS_PER_BATCH and ORDER could have an impact on the performance depending where you load the data. For more information, see OPENROWSET (Transact-SQL)[^] and Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server)[^]

If that doesn't reveal anything, try executing the commands directly on the SQL Server. At the same time monitor the memory, disk, network, and CPU usage to see which actually causes the bottleneck. You can use for example Windows Performance Monitor[^] for collecting data.


这篇关于microsoft.ace.oledb.12.0 64bit的有线行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆