473,395 Members | 2,006 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

SQL Server backend poor performance

I have converted an Access back-end to SQL Server back-end but am
having some problems. The Access to Access application has been
running well for some years.

I have successfully copied all the data to SQL Server and linked the
tables to the front end .mdb (I am not using .adp). Some queries were
performing poorly so I have converted these to Views and linked to
them.

Everything works well with good response but when about 8-10 users are
in the whole thing slows down to an unbearable extent. Using the
profiler I can see that there are between 20 - 30 connections during
the time that response is good, but suddenly with no apparent increase
in the number of connections the whole system grinds to a (near) halt.
This morning response was terrible with only about 3 users and fewer
than 10 connections.

I am at a loss as to how to analyse the problem. I cannot expect
others to solve the problem but I would welcome guidance on how to
explore the poor performance.

I am using DAO but wonder whether I should move over to ADO. I have
studied the book by Chipman and Baron and could convert the VBA code to
use ADO. What I cannot see how to do is specifically use ADO for such
things as bound forms or combo-boxes. If a form is bound to a query or
to an SQL statement how does one choose whether this uses DAO or ADO?

I am seeking help on three topics:
1 what tools or techniques are available to track down the causes of
poor performance?
2 should I change to ADO?
3 how do I make bound forms use ADO?

Aug 14 '06 #1
4 2664
Jim Devenish wrote:
I have converted an Access back-end to SQL Server back-end but am
having some problems. The Access to Access application has been
running well for some years.

I have successfully copied all the data to SQL Server and linked the
tables to the front end .mdb (I am not using .adp). Some queries were
performing poorly so I have converted these to Views and linked to
them.

Everything works well with good response but when about 8-10 users are
in the whole thing slows down to an unbearable extent. Using the
profiler I can see that there are between 20 - 30 connections during
the time that response is good, but suddenly with no apparent increase
in the number of connections the whole system grinds to a (near) halt.
This morning response was terrible with only about 3 users and fewer
than 10 connections.
My first guess would be to see if the performance issues are being caused by
locks being held on the tables/views. That is an area that can make a big
difference with just a few processes beign blocked.

Using SQL Server links to populate ComboBox and ListBox RowSources is a good
way to get a lock applied to that table. Even though that is just a READ
operation if the list is long enough Access will cache in a few pages of
rows and then hold a lock on the table until the entire list is pulled. If
the user never goes to the end of the list and keeps that form open the lock
can persist indefinitely.

I doubt that the DAO/ADO thing would make more than an incremental
difference.
--
Rick Brandt, Microsoft Access MVP
Email (as appropriate) to...
RBrandt at Hunter dot com
Aug 14 '06 #2
Rick

Thanks for this suggestion. Excuse me asking further but although I am
used to Access I am new to SQL Server.

How do I explore these locks? i.e. which tables/views have locks at any
time. Is there an SQL Server command to give information about these?

Jim

Rick Brandt wrote:
>
My first guess would be to see if the performance issues are being caused by
locks being held on the tables/views. That is an area that can make a big
difference with just a few processes beign blocked.

Using SQL Server links to populate ComboBox and ListBox RowSources is a good
way to get a lock applied to that table. Even though that is just a READ
operation if the list is long enough Access will cache in a few pages of
rows and then hold a lock on the table until the entire list is pulled. If
the user never goes to the end of the list and keeps that form open the lock
can persist indefinitely.

I doubt that the DAO/ADO thing would make more than an incremental
difference.
--
Rick Brandt, Microsoft Access MVP
Email (as appropriate) to...
RBrandt at Hunter dot com
Aug 14 '06 #3
Jim Devenish wrote:
Rick

Thanks for this suggestion. Excuse me asking further but although I
am used to Access I am new to SQL Server.

How do I explore these locks? i.e. which tables/views have locks at
any time. Is there an SQL Server command to give information about
these?
The SQL Server management tools (Entreprise Manager or Management Studio)
both have utilities for looking at "current processes" which will show locks
and whether any processes are currently being blocked by other processes.

--
Rick Brandt, Microsoft Access MVP
Email (as appropriate) to...
RBrandt at Hunter dot com
Aug 14 '06 #4
Tools to use are profiler and query analyser; profiler shows you what is
happening, query analyser allows you to look at query plans so you can see
where bottlenecks can occur.

Look closely at your indexing. You can inspect the relative effect of
adding/removing indexes using query analyser. Sometimes an index actually
decreases performance so each time you tweak check out the performance hit.

Check locking, you can do this either using Enterprise Manager or in query
analyser (look at sp_lock in BOL).

Views, personally I hate views, I have seen them abused so often and if a
system is performing poorly it is the first thing I look at. A chum of mine
ended up writing an analysis tool for views because we had so much trouble
with people writing something which worked ok when the system was installed
but then ground to a horrendous halt when the system was put under load.

If you are using linked tables then look at using pass-through queries for
large data updates or for pulling lists you could also look at using local
tables for static lists.

ADO can give a significant performance boost over DAO but not in every case
and is not a cure all option by any stretch of the imagination, it is
something you should look at in order to tweak performance not to try and
rescue a sick dog.
--

Terry Kreft
"Jim Devenish" <in***************@foobox.comwrote in message
news:11**********************@b28g2000cwb.googlegr oups.com...
I have converted an Access back-end to SQL Server back-end but am
having some problems. The Access to Access application has been
running well for some years.

I have successfully copied all the data to SQL Server and linked the
tables to the front end .mdb (I am not using .adp). Some queries were
performing poorly so I have converted these to Views and linked to
them.

Everything works well with good response but when about 8-10 users are
in the whole thing slows down to an unbearable extent. Using the
profiler I can see that there are between 20 - 30 connections during
the time that response is good, but suddenly with no apparent increase
in the number of connections the whole system grinds to a (near) halt.
This morning response was terrible with only about 3 users and fewer
than 10 connections.

I am at a loss as to how to analyse the problem. I cannot expect
others to solve the problem but I would welcome guidance on how to
explore the poor performance.

I am using DAO but wonder whether I should move over to ADO. I have
studied the book by Chipman and Baron and could convert the VBA code to
use ADO. What I cannot see how to do is specifically use ADO for such
things as bound forms or combo-boxes. If a form is bound to a query or
to an SQL statement how does one choose whether this uses DAO or ADO?

I am seeking help on three topics:
1 what tools or techniques are available to track down the causes of
poor performance?
2 should I change to ADO?
3 how do I make bound forms use ADO?

Aug 15 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: Uttam | last post by:
Hello, I am currently in the process of developing an application in a pure desktop world using Access 2000. I am intending to convert this pure desktop application into a Client Server...
17
by: Jon Ole Hedne | last post by:
I have worked on this problem some hours now (read many-many...), and I can't solve it: In vba-code I create a table with Connection.Execute, and add some data to it. This table is saved in the...
29
by: Mark B | last post by:
We have an Access app (quite big) at www.orbisoft.com/download. We have had requests by potential users to have it converted to an SQL version for them since there corporate policy excludes them...
14
by: diskoduro | last post by:
Hi!! Years ago I built a database to control the production of a little factory. The users wanted to work in a Windows Net workgroup so I created an mdb with all the tables and data an after...
16
by: John | last post by:
Hi All, I have two backend databases that area link to a frontend database where information is entered, retrieved and deleted. The information accessed from the frontend database is coming from...
4
by: Wayne Fang | last post by:
Hi, For various reasons (parallel structure with existing code, commonality of concepts, etc), we have C language functions implemented that use libpq to make a new connection to the same Postgres...
29
by: Jan | last post by:
Hi: I have an Access database that's been running (in one form or another) for a couple of different clients for a few years. Now a new client has requested that it be implemented with a SQL...
0
by: Ken T. | last post by:
I have questions regarding what happens on the web server side during an asynchronous web method call when the client aborts its request via .Abort() call. Background: My client app...
5
by: dreadnought8 | last post by:
I've worked with mdbs, and with SQL Server to a lesser extent, with Access as a front end, on commercial-strength systems for quite a while, starting with A97. The last 8 months or so, I've been...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.