Update on client side throws exception

Hi all,

I'm updating a SQL Server 2008 database table using SqlDataAdapter/DataSets 
and Visual Studio C# on the client side.  

TARGET TABLE TO UPDATE: T_Order
FIELDS:   TAXOR [nvarchar] (255) NULL,
              TAXPARTSIZE [nvarchar] (255) NULL
              TAXSBO [nvarchar] (255) NULL
              TAXGRP [nvarchar] (255) NULL
              TAXSBGRP [nvarchar] (255) NULL
			

SOURCE TABLE:  ConusSolLyr
FIELDS:   TAXOR [nvarchar] (255) NULL,
              TAXPARTSIZE [nvarchar] (255) NULL
              TAXSBO [nvarchar] (255) NULL
              TAXGRP [nvarchar] (255) NULL
              TAXSBGRP [nvarchar] (255) NULL

The following UPDATE statement returns a SqlException("Timeout expired.  The 
timeout period elapsed prior to completion of the operation or the server is 
not responding."):

foreach(string txtFld in txtFields)
{
   string cmdStr1 = "UPDATE T_Order SET " + txtFld + " = CSL." + txtFld + "   
                             FROM   T_Order TC " +
                           "CROSS APPLY (SELECT TOP 1 CSL." + txtFld + 
                          " FROM ConusSolLyr CSL " + "WHERE CSL.TAXOR = 
TC.TAXOR  AND CSL.TAXPARTSIZE =  TC.TAXPARTSIZE " + "GROUP BY CSL." + txtFld 
+ " ORDER BY COUNT(*) DESC) AS CSL";

    da.SelectCommand = new SqlCommand(cmdStr1, cn);
    da.Fill(ds, "ConusSolLyr");
}

However, the following code works on server-side when one field is specified:
UPDATE T_Order
SET TAXSBO = TAXSBO FROM T_Order TC
CROSS APPLY (SELECT TOP 1 CSL.TAXSBO 
FROM ConusSolLyr CSL
WHERE CSL.TAXOR = TC.TAXOR AND CSL.TAXPARTSIZE = TC.TAXPARTSIZE
GROUP BY CSL.TAXSBO 
ORDER BY COUNT(*)DESC) AS CSL

Would anyone know why I'm getting a timeout error when I run the update on 
client-side?  And, would anyone know how to "loop" through a 
set of fields using the T-SQL update statement above?  (Sample txtFields 
array for update include: TAXSBO, TAXGRP, TAXSBGRP).

Thanks for your help and attention.
0
Utf
5/18/2010 8:50:01 PM
sqlserver.programming 1873 articles. 0 followers. Follow

4 Replies
613 Views

Similar Articles

[PageSpeed] 18

Marilyn (Marilyn@discussions.microsoft.com) writes:
> The following UPDATE statement returns a SqlException("Timeout expired. 
> The timeout period elapsed prior to completion of the operation or the
> server is not responding."): 
>... 
> However, the following code works on server-side when one field is
> specified: 

There are a couple of possible reasons, but maybe the most likely is
that you have an open transaction in your SSMS window, so that your
client code gets blocked. Run the command COMMIT TRANSACTION in SSMS
until you get an error message. If you get an error message directly,
you did not have any open transaction.

> And, would anyone know how to "loop" through a set of fields using the
> T-SQL update statement above?  (Sample txtFields array for update
> include: TAXSBO, TAXGRP, TAXSBGRP). 

If I understand the query correctly, the value for each colunm could
come from different rows. Thus, you would need one query for each column.
Or at least one query with one CROSS APPLY per column. (But I think I prefer
the former.)


-- 
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

0
Erland
5/18/2010 10:14:41 PM
Hi,
Thanks again for responding.  I ran Commit Transaction in SSMS and I got an 
error right away.  

You're right that the query processes the value for each column: counts all 
the rows belonging to the same distinct TAXOR value, and then selects the 
value that has the most numerous count.  I'm thinking maybe because of the 
size of the source table (400,000+ rows), it's too much to process the query 
on client-side...but I really don't know.  I could query each column 
individually, but there are almost 100 columns (both text and numeric 
fields).  I don't know how to perform a loop inside T-SQL.


"Erland Sommarskog" wrote:

> Marilyn (Marilyn@discussions.microsoft.com) writes:
> > The following UPDATE statement returns a SqlException("Timeout expired. 
> > The timeout period elapsed prior to completion of the operation or the
> > server is not responding."): 
> >... 
> > However, the following code works on server-side when one field is
> > specified: 
> 
> There are a couple of possible reasons, but maybe the most likely is
> that you have an open transaction in your SSMS window, so that your
> client code gets blocked. Run the command COMMIT TRANSACTION in SSMS
> until you get an error message. If you get an error message directly,
> you did not have any open transaction.
> 
> > And, would anyone know how to "loop" through a set of fields using the
> > T-SQL update statement above?  (Sample txtFields array for update
> > include: TAXSBO, TAXGRP, TAXSBGRP). 
> 
> If I understand the query correctly, the value for each colunm could
> come from different rows. Thus, you would need one query for each column.
> Or at least one query with one CROSS APPLY per column. (But I think I prefer
> the former.)
> 
> 
> -- 
> Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
> 
> Links for SQL Server Books Online:
> SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
> SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
> SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
> 
> .
> 
0
Utf
5/19/2010 12:57:01 PM
Marilyn (Marilyn@discussions.microsoft.com) writes:
> Thanks again for responding.  I ran Commit Transaction in SSMS and I got
> an error right away.  

And the client code still hangs?

> You're right that the query processes the value for each column: counts
> all the rows belonging to the same distinct TAXOR value, and then
> selects the value that has the most numerous count.  I'm thinking maybe
> because of the size of the source table (400,000+ rows), it's too much
> to process the query on client-side...but I really don't know.  

Even if you construct the query in client code, the query is still
processed in SQL Server.

> I could query each column individually, but there are almost 100 columns
> (both text and numeric fields).  I don't know how to perform a loop
> inside T-SQL. 

It's not really meaningful anyway, since you would have to use 
dynamic SQL. So you could just a well do it client code.

One thing that is important to understand is that you will not get the
same query plan for all these 100 queries you generate. You had one
example that run quick in SSMS. But do you know that this particular
query runs slow from the client code? Isn't the case that it fails on
some other column? That particular column in your example may have
an approriate index.

If you can accept that the queries run a long time, you can do this:

   da.SelectCommand.CommandTimeout = 0;

This means "wait forever".

And, oh, it looks a little funny to use a DataAdapter.Fill to run an
UPDATE query. Normally, you would use ExecuteNonQuery.



-- 
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

0
Erland
5/19/2010 10:02:33 PM
Hi,

Thanks for pointing out my errors, especially on the ExecuteNonQuery...it's 
tough to remember fundamentals as I switch between ArcGIS and C# programming.

I added the line you suggested (CommandTimeout = 0) and it worked.  It took 
about 6 min 47 seconds to process one table, which I can live with since I 
only need to do this once.  I've run every single text field yesterday in 
SSMS and they all worked.  Funny thing, though, all the numeric fields have 
no problem running in client-side and they have the same update command 
structure as the text fields.  Can't understand why I hit a snag with text 
fields.  But this works now...so I'll move on.

Thank you so much,


"Erland Sommarskog" wrote:

> Marilyn (Marilyn@discussions.microsoft.com) writes:
> > Thanks again for responding.  I ran Commit Transaction in SSMS and I got
> > an error right away.  
> 
> And the client code still hangs?
> 
> > You're right that the query processes the value for each column: counts
> > all the rows belonging to the same distinct TAXOR value, and then
> > selects the value that has the most numerous count.  I'm thinking maybe
> > because of the size of the source table (400,000+ rows), it's too much
> > to process the query on client-side...but I really don't know.  
> 
> Even if you construct the query in client code, the query is still
> processed in SQL Server.
> 
> > I could query each column individually, but there are almost 100 columns
> > (both text and numeric fields).  I don't know how to perform a loop
> > inside T-SQL. 
> 
> It's not really meaningful anyway, since you would have to use 
> dynamic SQL. So you could just a well do it client code.
> 
> One thing that is important to understand is that you will not get the
> same query plan for all these 100 queries you generate. You had one
> example that run quick in SSMS. But do you know that this particular
> query runs slow from the client code? Isn't the case that it fails on
> some other column? That particular column in your example may have
> an approriate index.
> 
> If you can accept that the queries run a long time, you can do this:
> 
>    da.SelectCommand.CommandTimeout = 0;
> 
> This means "wait forever".
> 
> And, oh, it looks a little funny to use a DataAdapter.Fill to run an
> UPDATE query. Normally, you would use ExecuteNonQuery.
> 
> 
> 
> -- 
> Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
> 
> Links for SQL Server Books Online:
> SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
> SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
> SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
> 
> .
> 
0
Utf
5/20/2010 1:21:01 PM
Reply:

Similar Artilces:

Loggin IP address of MAPI clients
Hi, Does anybody know a way to log the IP address of the MAPI connections in Ex2003Sp2? I would like to log it as I do with the SMTP/IMAP connections in order to know the sender’s IP address. Some people can say that there’s not point about knowing this as all MAPI connections are authenticated and you can know “who” sent a message, but it’s equally important to know “where from” a message was sent when you do forensic research. Best Regards -- ~~~~ Javier Crespo Martinez Information Technology Service University of Cantabria, Spain On Mon, 27 Feb 2006 07:22:29 -0800, "Jav...

Update for MS Money 2005?
I have Money 2005. Is there an update to MS Money for Canadian users? Thanks in advance for any answers. We need a bit more information! Are you having problems with M2005 or is this just a post-Christmas/New Year random query when you are trying to get away from the in-laws? -- Regards Bob Peel, Microsoft MVP - Money For unofficial FAQs see http://money.mvps.org/ or http://umpmfaq.info/ I do not respond to any emails that I have not specifically asked for. "Daniel" <Daniel@discussions.microsoft.com> wrote in message news:E86EAB89-21DE-4505-ACAD-647278D736BD@microso...

Problem with Script Updating
I am using a script to update the “1099 Type” field for Master Vendor table. The script basically is a basic if-then statement. This script is run “Before Document Commit” and it’s not updating correctly, its flip-flopping the results. When the script is set to run Before Document Commit I have the “Destination mapping” field “1099 Type” set to “Use Script”. Script below: If SourceFields("Send 1099") = "N" Then DestinationFields("Options.1099 Type").Value = 1 Else DestinationFields("Options.1099 Type").Value = 4 End If I have also tried this s...

updating sheets based on data in first sheet
Another payroll question, I have a workbook that contains 26 sheets, one for each bi-weekl payroll period. I would like to set it up so when i add a new employe the rest of the sheets also update automatically with that employee name and information. I have been able to acheive this to a limited degree using th =sheet1!a1 formula, but this only updates the info in the first cel and particularly the first column. I would like to acheive this using the first sheet, since at th end of the year I would like to be able to calculate ytd figure easily. Thank -- Message posted from http://www.Exc...

Publisher 2007 and Microsoft Updates
I created a newsletter yesterday - everything fine - use Publisher all the time. Then an automatic update came down this morning and I can't open the file - it says "Publisher cannot open file" Other documents in Publisher are opening - any ideas? http://support.microsoft.com/kb/972566/ -- JoAnn Paules MVP Microsoft [Publisher] Tech Editor for "Microsoft Publisher 2007 For Dummies" "Kim" <Kim@discussions.microsoft.com> wrote in message news:8754339B-99DC-4D09-83AD-6B34D8215274@microsoft.com... >I created a newsletter yesterday - everythin...

Microsoft Update only updates Windows Defender
iacrosoft Update only updates Windows Defender - I have to use Belarc Advisor to get a list of missing updates, and then go to the Microsoft Download Center to search for the missing updates and download and install them one at a time. I have Windows XP Home SP3, with Microsoft Update set to automatic download - can anyone tell me why I do not get all the necessary upadtes? Is this a sudden, new problem? When was Automatic Updates last working? Can you update manually via http://windowsupdate.microsoft.com? Any chance you've got a beta build of WinXP SP3 installed? What...

Update question
Soory if this is the wrong place to ask this, but cannot find a NG proper to Windows 7. I currently run Windows Vista and am getting tired of Vista's decision to tell me that it is going to shut down in less than a minute. So have decided to upgrade to Windows &. I note that I can purchase an upgrade versiom for 64 quid from Amazon or an apparently full version of Windows 7 Home premium for 89 quid. My question is this - If I buy the upgrade version will I only be able to load it on a new PC in the future if I already have windows Vista installed? i.e For any future cl...

Outlook 2003 died mysteriously after update
Setup in a nutshell... System: Lenovo T500 laptop OS: Vista Business SP1 32-bit Software: Office Outlook 2003 SP3 Problem... So I'm using this setup for over a year, everything OK. Yesterday I did two things and now Outlook dies (quietly, sans error message) immediately after startup. It show the splash screen, displays my inbox, and *poof* disappears. What I did earlier... 1. Windows Update installed: KB9766662, KB979306, KB979099, KB975929 2. At the same time, while searching for another program to uninstall I stumbled upon (and uninstalled) Windows LIVE Toolbar and...

How update entity in post update?
I created a handler for Update post callout for Opportunity. I want update some fields of the opportunity on the PostUpdate. However, if I call the Update method of CRMOpportunity in the PostUpdate I will create a recursive post callout. Can somebody help me? Thank you for pay attention []'s Vin�cius Pitta Lima de Ara�jo You need to check the OrigObjectXML field to see what fields were updated and then act appropriately. Matt Parks MVP - Microsoft CRM ---------------------------------------- ---------------------------------------- On Wed, 4 Aug 2004 17:43:17 -0300, "Vin�cius ...

Cannot install update KB979906 for .NET Framework 1.1 SP1
Running : Windows XP media center edition SP3 Have tried installing KB979906 a few times and also downloaded update manually but cannot install this update. Receiving error 0x643.Is it safe to uninstall the .NET Framework 1.1 and re-install as possibly corrupt , without having to uninstall/re-install all other .NET frameworks 2 , 3 and 3.5 including the updates that go with them? .. Hello sherlockomes, you might want to look at the following kb article to see if this will help with the error 80070643. <http://windows.microsoft.com/en-US/windows-vista/Windows-Update-error...

latest update too MSCFV2
Hi, I have MSCFV2 version 6.5.7825.0. Could someone inform me if this is the latest download? Looks like you have 6.5.7825.0 from 05/21/2006, but there is a newer version - 6.5.7831.0 from 06/01/2006. C. Smith Enso Technologies, Incorporated http://www.ensotech.com On Tue, 13 Jun 2006 04:25:02 -0700, Paul <Paul@discussions.microsoft.com> wrote: >Hi, > >I have MSCFV2 version 6.5.7825.0. Could someone inform me if this is the >latest download? Christopher Smith csmith@ensotech.com Enso Technologies, Incorporated http://www.ensotech.com Also - meant to post this in t...

Print record once, update Yes/No field verifiying print
I would like to print a group of records, then have a Yes/No field [Printed] updated in my Jobs table with an update query showing the records were printed. Then next time the report runs, In my query criteria I will test for True values on the Yes/No field. Then only the records with the Yes/No field marked No will print. Any suggestions? Thanks Tommyboy,there's more to this question than meets the eye. For an explanation of what's involved, see: Has the record been printed? at: http://allenbrowne.com/ser-72.html The article includes a free sample database that dem...

Dynamic Menu update
Hi All, I need to update a menu item dynamically, setting its SetCheck property to either true or false, based on a user operation. I am trying to do this from a custom function. Usually, the pCmdUI pointer is used. But how do I do it from another function? Thanks Your "other function" should change some setting. In your ON_UPDATE_COMMAND_UI handler, you should check that setting and call SetCheck as needed. -------------- Ajay Kalra ajaykalra@yahoo.com In addition to Ajay's response, this page may help you: http://msdn2.microsoft.com/en-us/library/6kc4d8f...

online updates for money2003(not updating)
Money gets its updates from spcomstock.com and the server has moved to a new site. The default site that money provides has to be changed. At this time I don't know how to do this. If I find out how to do this I will Post it. ...

Payroll Update
HI all, We are running GP 7.5. I installed SP7 and the July 2005 tax update for CDN payroll. Now out payroll administrator gets an error message: 'The modified version of P_Payroll registry is missing'. How do I fix this problem Thanks -- Henry ...

[ANN] Excel X security update
Hi All, A security update for Excel X was also released today: http://www.microsoft.com/mac/downloads.aspx?pid=download&location=/mac/d ownload/officex/ExcelX_Security_1017.xml&secid=5&ssid=17&flgnosysreq=Tru e Or at least: http://www.microsoft.com/mac/downloads.aspx Corentin -- --- Mac:MS MVP (Francophone) --- http://www.mvps.org - http://mvp.support.microsoft.com MVPs are not MS employees - Les MVP ne travaillent pas pour MS Remove "NoSpam" to e-mail me - Retirez "NoSpam" pour m'�crire ...

HOW ABOUT AN UPDATE?
Microsoft, can we get an update on the login issue please???? It's been a whole day since we heard from Russ last. Err, Russ sent 2 updates today. Subject line = "File Lock Update" Hope you can find them. "shan" <anonymous@discussions.microsoft.com> wrote in message news:6bef01c475b3$3e7d6ea0$a601280a@phx.gbl... > Microsoft, can we get an update on the login issue > please???? It's been a whole day since we heard from > Russ last. >-----Original Message----- Look again, he posted 2 yesterday, we are still waiting for something today...

FWD: Try on these correction update from the MS Corp.
--omvflfmgecbtuznop Content-Type: multipart/related; boundary="pesxyyfvxtk"; type="multipart/alternative" --pesxyyfvxtk Content-Type: multipart/alternative; boundary="locjfxspwlfruwcg" --locjfxspwlfruwcg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Microsoft Client this is the latest version of security update, the "October 2003, Cumulative Patch" update which fixes all known security vulnerabilities affecting MS Internet Explorer, MS Outlook and MS Outlook Express. Install now to continue keeping your computer secure from th...

Cannot update table--only does SQL insert
Hi, just another newbie type of question.... i have a new window with its own table. i'm doing a "copy from window to table" &c, and it works fine to insert data the first time. however, i can tell from the SQL Profiler that when I try to modify the data, it does not do an update--it tries to do another insert (and of course, can't). Is there something I should be setting in Dexterity somewhere to make the table updatable, or do I need to manage this with PassThroughSQL? thanks in advance. Table operations are covered in detail during the Dexterity Training, pl...

Cannot Update office
Version: 2008 Operating System: Mac OS X 10.5 (Leopard) Processor: intel When I try to update office a message appears saying that a version of the software needed to udate microsoft office is not available. What is this and what can be done to correct it I have the same problem with Tiger 10.4.11. "efrosini@officeformac.com" wrote: > Version: 2008 > Operating System: Mac OS X 10.5 (Leopard) > Processor: intel > > When I try to update office a message appears saying that a version of the software needed to udate microsoft office is not available. What is this and ...

Server Side Rules #4
Does anyone know of a utility that will allow an exchange admin to see the various server side rules set for each user account? Thanks CR I know this does not do exactly what you want, but you might be able to adopt it to your needs if you can write your own script. Here is an article and script that Exchange MVP (and clever dude) Glen Scales wrote: http://gsexdev.blogspot.com/2005/10/reporting-on-forwarding-rules-in.html -- Jim McBee Blog - http://mostlyexchange.blogspot.com "CR" <crash354@hotmail.com> wrote in message news:1153944835.764995.305870@m73g2000cwd.goog...

automatically update field
Hi I have a combo box with two columns - product & stock code. When I select a product I want the the stock code column which I have in my table to automatically populate. Is this possible to have on the actual main table? -- Thank you for your help Yes - you could use the AfterUpdate event of the combo to set the value of the control bound to the field holding the stock code. But - why ? You already have the stock code so it seems you want to store it again (twice in the same table or - even worse - in another table). Both of these are very bad ideas. You should use the rel...

Recorset not updateable in a crosstab query
I have created a crosstab query based on just one linked table using the Access wizard and when I finished I get the erro "The recorset is not updateable", clicking on OK it shows me the tahe results in the corresponding table, but if I try to see the structure of the query it shows me the structure mask but saying that in the expression "Format([DPC]:"aaaa")" there to many closing brackets. I copied the table to the current DB to avoid any links problems but the result is the same. Can anybody tell me how to solve the problem? Thanks very muc...

Problems Updating to Visual Studio 2008
I've previously used Visual C++ 4 and have now updated to Visual Studio 2008. In Visual C++ 4, I used the Class Wizard with its five tabs: Message Maps, Member Variables, OLE Automation, OLE Events, and Class Info to define an application. This structure doesn't seem to exist in Visual Studio 2008. Can anyone explain, or point me to information about, how I can get to the same functionality in Visual Studio 2008? I'd also welcome any suggestions for a book I might purchase that explains how to use Visual C++ as implemented in Visual Studio 2008. Gordon P "Gordon P...

Client method called by RegisterStartupScript is firing but UI isn't updating
Can somebody look at the below code and tell me what I am doing wrong. I am uploading files and need to report back to the client when each upload has completed. for(i=0;i<=Request.Files.Count;i++) { int percentComplete = (int)Math.Ceiling((double)(i + 1) / (double) Request.Files.Count * 100); string message = string.Format("{0} of {1} uploaded", i + 1, Request.Files.Count); ScriptManager.RegisterStartupScript(this, this.GetType(), "progress" + i, @"do_progress('" + message + "','" + percentComplete + "');",...