Weird behaviour of microsoft.ace.oledb.12.0 64bit - sql

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 weird.
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.

Related

SQL query is running 10 times faster on local desktop SQL Server Express than on SQL Server in Azure

We are currently running two instances of SQL Server. For development purposes, we run a local DB on a desktop PC in our office.
The PC has following stats:
8 GB Ram
AMD Athlon 5350 APU with Radeon(tm) R3 2.05 GZ
64 Bit Windows 8.1
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) Express Edition (64-bit)
HDD Seagate ST1000DM003 1 TB
The server is located in Azure as VM Standard-Tier A3 running the pre-provided Windows Server 2012 R2 Datacenter image
Now we are facing a problem that the exact same query is running locally on the desktop 10 times faster than the on the server.
I connect to the pc with a local installed Management Studio via TCP/IP over our local network. When I connect to the server I use Remote Desktop connection and start a local instance of management studio on the server.
I have changed already the connection mode from default to TCP/IP on the server which brings me to the factor 10 times slower with default connection it will be 20 times slower. Even changing to named pipes the performance is worse.
Also rewriting the query and using different approaches, always the express version is much faster than the server. We did not do any configuration or tuning on the installation of the express version so on the server side.
Any comments a very appreciated!
Best
Simon
You should add the following at the top of the query to see where the differences are:
SET STATISTICS TIME ON
SET STATISTICS IO ON
Is your Local machine have SSD ? If it's the case, it's normal.
Try to rebuild indexes used.
Update the Database/Table statistics. The Execution Plan can be the same, but with bad stats, I've often saw very low performance. Especially if you make a lot of insert/delete.
You can see if something is wrong with SET STATISTICS IO ON. Look at the logical reads on tables, the orders of workfill tables, etc. Check if it's different from the local server.

SQL Server - Sharing database over different boots on local machine

Suppose I have 2 bootable partitions on my local machine with Windows 7 running SQL Server 2008 R2 on one and Windows 8 with SQL Server 2012 on the other.
Is it possible to run/attach the same database (created under SQL Server 2008 R2) on both versions of Windows so if I boot up Windows 7 I can run my application against it. And if I run up Windows 8 I can run my application up against that? Would there be any issues if I tried it - i.e logins?
Thanks,
Andez
No, that won't work.
As soon as your SQL Server 2012 version would access one of the database, it will upgrade it to the latest internal database version for the 2012 version.
And once that's happened, the SQL Server 2008 R2 cannot use that database file anymore.
The best solution for this would be to put the database on a separate server which you can access from both your partitions - and consolidate on one SQL Server version (preferably 2012). The other obvious option would be to install the same version of SQL Server on both partitions.
Everything is stored within database, so no you will not have any issues. Just remember to use not only main application database, but use the same meta-databases (aka System dbs).
In fact it works this way on failover clusters.
EDIT:
Haven't noticed you are going to run 2 different db systems. I would recommend you to use exactly the same versions of SQL server.

SQL Script in VM taking long time for execution

I have the Execute SQL Script package that contains the script to insert about 150K records.
Problem in here is when I execute the package in the Virtual machine its taking 25 min's approx and the same package in physical machine its taking 2 min's
Question 1? Why its taking that much time to load the same data in VM.
Question 2? How to solve this performance issue.
Physical machine configuration has 4GB Ram and 250GB HD + Windows server 2008 R2 + SQL server 2008 R2 Standard Edition.
Virtual machine has the same Configuration
Update: The Problem is with the SQL Server in VM.
Question 1? Why its taking that much time to Run the same script in VM.
Question 2? How to solve this performance issue.
Both the batabases schema in Physical Machine and VM are identical. Other databases are also same. There was no indexing applied for that tables in both machines. Datatypes are same. harddisk as I said has the same configuration.
No RAID is done on both the machines.
Physical machine has the 2.67GHz RAM Quad Core and in the virtual machine has the
2.00GHz RAM Quad Core
Version of SQL PM:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
Version of SQL PM:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor)
I executed the script Execution plan for both are the same as there is no difference in plan.
Vendor is HP ML350 Machine.
There are almost 20 VM's on the same physical server out of which 7 servers are active.
There's an article about properly setting SQL's configuration for a VM implementation here: Best Practices for SQL Server. Below is an excerpt, though the article includes other tips and a good performance testing plan:
Storage configuration problems are the number one cause of SQL performance issues. Usually these problems arise because the DBA requests a virtual disk of the VI admin, the VI admin places the VMDK on a LUN that may or may not meet the DBA's performance needs. For instance:
VMs' VMDK files placed on VMFS volumes without enough spindles.
Many VMDK files placed on a single VMFS volume which could use more spindles.
Database and log files placed on the same LUN which, you guessed it, could use more spindles.
This may be obvious to some, but this problem occurs again and again. The VI administrator should be aware of a few technical items that can help understand and avoid this problem:
Based on the IO demands of the DB files, a certain number of
spindles should be guaranteed to this file. This means that its
VMDK must be placed on a VMFS volume to accout for the SQL Server's
demands and all of the other demands on that volume.
Mixing sequential activity (such as log file update) and random activity
(such as database access) results in random behavior. This means
that the LUN configuration in the pre-virtual physical environment
may not be sufficient for the consolidated environment. This is
discussed some in Storage Performance: VMFS and Protocols.
When storage isn't meeting the SQL Server's demands, the device latency
or kernel latency (queueing time) will increase. Read up on these
counters in Storage Performance Analysis and Monitoring.
The most common cause for this problem is the lack of RAM. Having everything setup on a small 4GB RAM machine is your problem.
When you try to load those 150k rows into memory (remember, everything that happens in SSIS is in memory), a lot of those rows are being handled by your pagefile.
Pagefile on your VM is a lot slower than the one on your physical machine.
To solve this, increase the amount of RAM on your virtual machine.
I have a similar problem.
Two client machines (one physical, one virtual) execute a batch using SQLCMD. This batch calls a Stored procedure on a physical server (so it's not a memory problem since the elaboration is only on server side).
The batch executed from the physical machine takes 20 minutes. The batch executed from the virtual machine takes 1 hour and 20 minutes.
Using SQL profiler I noted that in the case of slow execution there is a wait type ASYNC_NETWORK_IO.
Probably the virtualized network layer is not optimized.
Could you run a SQL profiler and check if you see the wait type ASYNC_NETWORK_IO?

Microsoft SQL 2005 active cluster node has 100% CPU load after clustering

Before moving to the SQL Server 2005 cluster we had on avarage 60% CPU load. After moving to active/passive cluster (with the exactly same hardware), the load on active node CPU is becoming 100% and after a while time-outs are comming from our web application. Any ideas what could be a couse?
Additional info:
OS: Windows Server 2008 Enterprise;
SQL: SQL Server 2005 SP3 Enterprise;
Both nodes has exactly the same hardware
OK, it's SO STRANGE, but installing SQL Server 2005 SP3 Comulative Update 6 helped!

Is there any known issues with using linked servers between 64bit sqlserver2005 and 32bit sql2000

I seem to have problem getting linked servers working to query between database/servers running sql2000 32bit and 64bit sql2005. Is this a known bug? If so, is there a workaround, or fix?
Well, there's this issue.
To resolve this problem, manually run the Instcat.sql script that is included with SQL Server 2000 SP3 or SP4 on the 32-bit SQL Server 2000 server or on the SQL Server 7.0 server.