Multi-thread Tasks Using A Single Connection Object Concurrently
Jul 20, 2005
is it possible to use a single connection object shared by several
tasks where each task is handled by a thread? these tasks call stored
procedures that return record sets, no editing, update or delete.
my objective is that db connection is expensive and each user can only
have 1 connection object. each user submits a request to the web
server, and the result web page construction consists of a number of
result sets obtained from several stored procedure from the same
database instance.
i could obtained my result sets by making each sp call one at a time
but was thinking whether i could instead break up the tasks, create a
thread for each task that shares the same db connection object
concurrently. the connection object will be alive until all tasks are
completed, that is if the final object ive could be achieved in a
shorter time. No connection pooling here.
i am wondering over questions like:
1. within the same db instance, if 2 stored procedures need to access
the same table, does SQLserver queue-up and service one request at a
time.
2. would there be any problem using the connection object this way,
sharing between multiple theads?
3. is it possible that a 'dead-lock' may occur within the DB?
of cos this whole idea can be absurd and into the trash if the
connection object doesn't support multi-thread and is queue based in
the first place.
pardon me if my SQL server basics is off track. been doing too many
other things.
We have an application that runs Jobs, each of which affect ## number of child objects (usually around 1M). When a thread gets to 5000 updated child objects it bulk inserts into a table called ActionLog with the child Id and JobId.
When the job is complete a sproc SUMs the children from the ActionLog table: select sum(id) from ACTIONLOG where JOBID = @JobId;
It then updates the Jobs table AffectedObjectCount column with the sum(*) from above.
Instead of writing to the ActionLog table and calculating the SUM at the end I would like to do this 'real time'. After the bulk insert I would like to update the AffectedObjectCount column with the number of rows that were just bulk inserted. I tried this in the past and ran into major contention issues. There are usually 20 threads running a job so there exists a lot of potential for deadlocks.
Is there a recommended way to handle updating one column on one row from multiple threads? What is the best practice for a counter like this?
I am using the exactly same sample code on http://msdn2.microsoft.com/zh-cn/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx to synchronize a push subscription and get this error while executing the statement:
subscription.SynchronizationAgent.Synchronize();
I even added a [STAThread] attribute on the method but still no luck, anybody can share a light on it? Thanks!
I have a DLL deployed in SQL2005 which uses Thread pool. Since DLL exists in DB we can directly access it using context connection = true.
In my case the following works fine, if i execute the same out side Threadpool
SqlCommand cmd = new SqlCommand("select 1...", connection); SqlContext.Pipe.ExecuteAndSend(cmd);
When i execute inside threadpool, either by passing opened connection object, or tried to open connection to "context connection = true" i am getting following error.
System.InvalidOperationException: The requested operation requires a Sql Server execution thread. The current thread was started by user code or other non-Sql Server engine code. at Microsoft.SqlServer.Server.SmiContextFactory.GetCurrentContext() at Microsoft.SqlServer.Server.SqlContext.get_CurrentContext() at Microsoft.SqlServer.Server.SqlContext.get_Pipe() at hiqidty4.hiqidty4.Identify_Search(Object identifyin)
Hi, I am trying to enable remote access on a SQL Server 2005 standard edition instance. I have enabled it in the properties using the Management studio and have enabled it under Sql Server Surface Area Configuration under "Database engine".
But it didn't work. I know for a fact that my connection string is correct (I tested it on the actual machine)
So I checked everything again and I noticed in the Sql Server Surface Area under "Analysis Services" there is another "remote connection" checkbox to be enabled, however it won't let me enable it there because it says the "Sql Browser" is not started. I checked and the Sql Browser is started.
I'm thinking maybe the problem there is that I have an instance of SQL 2000 running and perhaps it is the sql browser for that (I can remotely connect ot my SQL 2000 instance).
I checked under Computer management -> services and their is no SQL Browser for the instance of SQL 2005. Not even a thing to enable. Just the Default instance SQL Browser, which is for my SQL 2000 instance. Am I missing something here?
Also there is no SQL Browser to enable in the management or Surface Area Configuration programs.
I have also tried to connect using the default port number (1433) and the IP (to bypass the need for the SQL Browser). It apparently finds my Server 2000 instance because it doesn't accept my user name and password and connot find the specific database (note: I verified the username and pswd are correct by testing the values on the SQL machine). How do I find what port number a specific instance of SQL Server is running on?
I added a connection (ADO.NET) object by name testCon in the connection manager - I wanted to programmatically supply the connection string. So I used the "Expressions" property of the connection object and set the connectionstring to one DTS variable. The idea is to supply the connection string value to the variable - so that the connection object uses my connection string.
Then I added a "Backup Database Task" to my package with the name BkpTask. Now whenever I try to set the connection property of BkpTask to the testCon connection object, by typing testCon, it automatically gets cleared. I am not able to set the connection value.
Then after spending several hours I found that this is because I have customized the connection string in testCon. If I don't customize the connection string, I am able to enter the "testCon" value in the connection property of the BkpTask.
I am using ODBC (ODBCLink/SE) to connect to HP3000 system;Retrieving the data into Microsoft Excel goes fine usingMicrosoftQuery.But if I try to use SQLServer2000-DTS on Windows2003 to do the import,it always fails and gives the message:"ODBCLINKSE does not allow multiple thread"Does anybody knows how to do that?I need to synchronize data in HP3000 into my database in SQLServer; andI dont see any other ways to do that besides using DTS-scheduled-jobs.Pls help..
Hi, I am deploying my web through a web hosting services which provides SQL database support. I got following errors whenever I try to open my webpage,which never happen when I run my web on the local machine. I have my connection string configured in my web.config as below: <add name="ArtHouseConnection" connectionString="Server=serveripaddress; Integrated Security=True; Database=arteh3_database;User Id=username;Password=password;" providerName="System.Data.SqlClient"/> <add name="ASPNETDBConnectionString1" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/> This is the source code where error was generated: public static class ArtHouseConfiguration { //cache connection string private readonly static string dbConnectionString; //cache data provider name private readonly static string dbProviderName; private readonly static string siteName; //initialize constructor properties static ArtHouseConfiguration() { dbConnectionString = ConfigurationManager.ConnectionStrings["ArtHouseConnection"].ConnectionString; dbProviderName = ConfigurationManager.ConnectionStrings["ArtHouseConnection"].ProviderName; siteName = ConfigurationManager.AppSettings["SiteName"]; } and finally this is the error mg I got: Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.Source Error:
Line 30: static ArtHouseConfiguration() Line 31: { Line 32: dbConnectionString = ConfigurationManager.ConnectionStrings["ArtHouseConnection"].ConnectionString; Line 33: dbProviderName = ConfigurationManager.ConnectionStrings["ArtHouseConnection"].ProviderName; Line 34: Source File: d:inetpubvhostsartehouse.orghttpdocsApp_CodeArtHouseConfiguration.cs Line: 32 Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.] ArtHouseConfiguration..cctor() in d:inetpubvhostsartehouse.orghttpdocsApp_CodeArtHouseConfiguration.cs:32
[TypeInitializationException: The type initializer for 'ArtHouseConfiguration' threw an exception.] ArtHouseConfiguration.get_EnableErrorLogEmail() in d:inetpubvhostsartehouse.orghttpdocsApp_CodeArtHouseConfiguration.cs:74 Utilities.LogError(Exception ex) in d:inetpubvhostsartehouse.orghttpdocsApp_CodeUtilities.cs:100 ASP.global_asax.Application_Error(Object sender, EventArgs e) in d:inetpubvhostsartehouse.orghttpdocsGlobal.asax:20 System.EventHandler.Invoke(Object sender, EventArgs e) +0 System.Web.HttpApplication.RaiseOnError() +182
Suddenly, the sql server is down, in the log file, C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOGERRORLOG, I found the record as follows,
2007-03-05 15:40:31.59 Logon Error: 17189, Severity: 16, State: 1. 2007-03-05 15:40:31.59 Logon SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: 172.21.123.48]
Hello I created a table adapter with the following query select * from building where buildingname in (@param1) I used the query builder to the test the query and it works ok if I pass a single value ex: name: @param1 value: Building1 but when I use the value: Building1, Building2 then it doesn't return anything If i do a direct sql: select * from building where buildingname in ('Buiding1','Buiding2') returns many rows. Now I have a class that has the following function<System.ComponentModel.DataObjectMethodAttribute(ComponentModel.DataObjectMethodType.Select, False)> _ Public Function getBuilding(ByVal building As String) As myDataSet.buildingDataTableReturn adapter.getBuilding(building) End Function When I call this function I try to pass the building value sorta like dim building as string = 'Building1,Building2' and it doesn't work. I tried a whole bunch of variations. How are you supposed to format the parameter string? Thanks Peter
If I have a job that runs every minute, and that job happens to take more than one minute to run on occassion, will SQL Server start a second instance of the job or will it be serial - one after another ?
I have a parameterized main report that contains a link to a sub report with parameters. Then from the sub report I have a link that takes you back to main report. If I use multi value parameters or single value parameters the links going back and forth between the two reports works just dandy, when I run it on my PC. However when I deploy the reports to the Web Server, the link going from the sub report back to the main report only works if the parameters are single select. Going from the Main to the Sub it doesn€™t matter.
This is the error I get using multi select parameters going from the sub report back to the main.
The path of the item "(null)" is not valid. The path must be less than 260 characters long and must start with slash. Other restrictions apply. (rsInvalidItemPath)
The latest similar question is almost a year old and hasn't been definitively answered. I'm designing a certificate type report where the declaration text uses static and dynamic text generated in an expression for the textbox. The problem is that there doesn't seem to be an obvious way of formating sections of the text expression with different font sizes, weights and attributes to depict the effect desired. E.g. I want one textbox to say:
This Certifies that {a field value} was blah blah blah by {another field value} etc.
Can this be done in a regular textbox? If not, are there any work-arounds to accomplish the same effect. BTW, I'm working in RS 2005 flavor with VS 2005 Report Designer.
I had a multi publisher single subscriber replication in my job and now i want remove it. i disabled the subscriber. Now if i disable the publisher and distributor then it gives me a error cannot drop the distribution DB because it is currently in use. this DB can never be dropped since there is at least one publisher at one time that accesses this DB everytime. How should I disable this publication.
I got issue when passing multiple values to a single parameter. Here is my stored procedure as following:
CREATE PROCEDURE [dbo].[School] @Grade AS varchar(50), @Class As varchar(50) AS BEGIN SELECT Name, Grade, Class FROM School WHERE Grade = (IsNull(@Grade, Grade)) AND Class IN (IsNull(@Class, Class )) END
In the front end, I got multiple values for Subject parameters such as Math, English, Reading, etc... in a specified class. How do I can modify my above stored procedure to receive multiple values for a single parameter.
I have a DB that is currently not normalized and will be getting about 100K concurrent users that will mostly be doing Read-Only operations from multiple tables.
I am trying to figure out if I should start thinking of having a DB per client (1000 clients) or if I should normalize the database and keep it as a single DB with good indexes and partitioning.
Hardware is not a problem but 100K concurrent users is.
I'm using SSRS 2005 which connects to SQL Server 2005. I need to pass Multi valus for single parameter...
E.g. Command type : Text SELECT * FROM COUNTRY where CountryId IN ( @CountryID)
If i tried to preview using single parameter, it shows the record without any problem. However when i tried to put multi values, it gives error message?? I read somewhere which says, need to set to multivalue. But, i could not find the place to set the multi value option...
How to solve it?? Your suggestion/recommendations greatly appreciated.
Hello, I am looking into a new project and I assume that I can end-up in a situation where the same package could be called at the same time (or close enough) by different jobs passing different values to the package's variables. Is it going to work? Will each instance of the package run in a separate thread? I would think so because I already have a package similar to this. The different is that the new package will run for a long time as opposed to the older one which runs for a second or so only. Just wanted to make sure and gather your feedback. Thanks
DECLARE @ServerCIName varchar(5000) SELECT * FROMÂ dbo.INC WHERE Status in ('Assigned','In Progress','Pending') and Description like '%' + (Select * from SplitDelimiterString(@ServerName,',')) + '%' and (select DATEADD(dd, DATEDIFF(dd, 0, (Submit_Date)), 0)) = (select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)) In place of "and Description like '%' + (Select * from SplitDelimiterString(@ServerName,',')) + '%' ", if I use "and Description like '%' + @ServerName + '%' " and pass a single value, it works.
But @ServerName contains multiple values and it is dynamic (not constant).
Dear members,I'am thinking about the "best" way to connect to my sql-server viaADO.Net (if there is a best way).My application uses the sql-server very intensively. At the momentevery database-operation opens a connection, executes and then closesthe connection.Another way would be to use only a single connection to the database,which is opened when the application starts.What do you think is the better way to get a high performing sqlserver: using one single application connection vs. using oneconnection for every operation?Cheers, Sebastian
I admit I am a novice to queries and stored procedures but understand stored procedures are more secure, so I am choosing to challenge myself with a stored procedure and have not been successful at all.
What I am looking for is a stored procedure which would query the single table named Hospital, which would search from a single textbox the end user would enter the text they are searching for on a Windows VB application but is dependant on a few end user selected items.
1. The end user can select a radio button either "Starts with" or "Contains" 2. The end user can select from 6 checkboxes (Hospitals, Address, City, State, Zip, Type) to limit or expand their search from the columns in the table.
The table has 17columns (CO, PARENTCO, ADDR, POBox, CITY, State, ZIP, TEL, FAX, WEBSITE, HOSP_TYPE, OWNERSHIP, BEDS, CONTACT, TITLE, Email) but I am only allowing the end user to search by the above 6 columns and need to display the above 6 columns plus the phone, fax and website columns.
After the user clicks the search button it displays the results in a listbox and the user will then select the one they want and it displays the information in another set of textboxes.
Hopefully someone can get me pointed in the right direction! Thanks for your help!
At one point in my package I call a simple web service that kicks off a process on a remote server using a Web Service Task . I need to be able to point the task at a test instance while I'm testing and a different one when it goes to production. The simple answer (you'd hope anyway) is to just store the ConnectionString for the HTTP Connection Manger in Package Configurations for TEST and PROD. I did this and when the package runs, the connection manager's connectionstring does get changed, but the web service task doesn't use this value. It uses the value defined in the WSDL file which in my case contains the URL for the TEST instance.
Am I missing something obvious? Do I really have to get the WSDLs from PROD and TEST and deploy both of them to the appropriate environment? What does the ConnectionString in the HTTP Connection Manager actually do then?
We have a SQL 2014 AlwaysOn availability group running on two Windows 2012 R2 servers that are in the same subnet. We created a new server in a second subnet, installed SQL, joined the server to the Windows cluster, added a new IP resource for the new cluster, and performed the other remaining steps to add a new AG replica to the SQL instance on this new server. When we try to move the core cluster resources to the new node to test failover, we get an error. Here's the command we've been using:
Move-ClusterGroup "Cluster Group" -Node node3
and it returns the error: The operation failed because either the specified cluster node is not the owner of the group, or the node is not a possible owner of the group...I've checked the ownership of the cluster groups and the cluster resources and it looks like they are set appropriately:
>Get-ClusterGroup | Get-ClusterOwnerNode Cluster Object Owner Nodes ---------------- --------------- Available Storage {} Cluster Group {node1,node2,node3} SQLAG {node1,node2,node3}
[code]....
We've double-checked that all IP resources are in the right subnets and that the dependencies for the Cluster Name resource and the Listener Name resource are set appropriately. I'm not sure what else to check since the PowerShell commands seem to indicate that node3 is an owner of the appropriate resources. What other things need to be checked or if the ownership being checked isn't the same as what PowerShell is checking?
I have a fairly complex report that was given to me that was hard coded for single parameters. There is a dropdown for each market (created from a query in SSRS). The users have to run for each market each week.
Is there a way to use this report as a Sub-report inside a list of a master report and then use a mult-value parameter?
I want this multi-value parameter to build the values for the list and then run the "sub-report" for each value.
I would like to be able to adjust the multi-value property of a parameter based on the value of another parameter in my report. The controlling paramter would be binary with two options for Single or Multiple selection. I would like my parameter to default to multi-value, which I can do on the screen selection. I have tried to add an IIF statement to the XML code, with no success. Any ideas would be helpful.
I have two tables, one a data table, the other a product table. I want to perform a join on the two tables with values distributed into columns based on the value in the month field.
Hi,Would like to know the performance differenece between Multi-columnIndex vs Single Column Indexes. Let's say I have a table with col1,col2, col3 along with a primary key column and non-indexed columns.In queries, I will use col1, col2, and col3 together and some timesjust one or two of these three columns. My questions is, should Icreate one index contains col1, col2, and col3, or create 3 seperatedcolumns. I.e. each column has its own index. Any performancedifference?Thanks a lot.
I am using SharePoint Services 3.0 (SP1) with default configuration options, which installs the Microsoft##SSEE instance of SQL to my local C: drive.
While attempting to relocate the files to another drive, I set one of the databases (as recommended) to Single User by using the SQL Server Management Express tool.
I cannot now reset that database to Multi User, even by executing the query