When this fires a query is done on the customer table to get some values
and put some order/customer data into an audit trail table.
In one period of time, it appears that the trigger did not put the data into the separate table. No known reason.
Suspicion: What if the customer table were locked by some process when the trigger fired. Maybe the trigger was chosen as a deadlock-victim.
?? I guess I need to check for @@ERROR during the trigger and do something. Any suggestions? I think I can raise the priority of my trigger to "win" during a deadlock.
If trigger activity is chosen as a deadlock-victim, can the trigger make another attempt to complete it's activity?
Here is the exception I am getting, any idea why this might be happening:
Exception: ThisMethod is done: let this go: Exception: Transaction (Process ID 74) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Stack Trace: at
Here is the exception I am getting, any idea why this might be happening:
Exception: ThisMethod is done: let this go: Exception: Transaction (Process ID 74) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Stack Trace: at
I was trying to extract data from the source server using OLEDB Source and SQL Server Destination when i encountered this error:
"Transaction (Process ID 135) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.".
What must be done so that even if the table being queried is locked, i wouldn't experience any deadlock?
I am doing an update to set a field value = anothe field value (in thesame table) where it is not supplied. I'm handling this in thetrigger, but am getting deadlocks.Do you see anything wrong with this that would cause deadlocking?ALTER TRIGGER [trg_myTable_UPDATE]ON [dbo].[myTable]AFTER UPDATE,INSERTASSET NOCOUNT ONBEGIN TRANSACTIONUPDATE ASET A.MarketID = A.SiteIDFROM myTable AINNER JOIN INSERTED BON A.UID = B.UIDWHERE B.MarketID IS NULL;IF (@@ERROR <0)BEGIN -- if...then for error handlingRAISERROR 20000 'trg_myTable_UPDATE Update Trigger Failed.Transaction aborted.'PRINT 'Unexpected Error Occurred!'ROLLBACK TRANSACTIONENDELSECOMMIT TRANSACTION
a trigger need to insert or update record at the other table in high traffic environments however, the deadlock happens; ie, a trigger running twice at the same time want to need to insert record at the table.
i trid to change isolation as SERIALIZABLE or REPEATABLE , but i cannot solve the problem. i guess the "while loop" affects the result because i try to cancel the loop and execute smoothly.
? How to solve the deadlock??? Thx
----------------------------- i used the following commands to change isolation level: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE begin transaction commit transaction
----------------------------- the code are as follows: declare setskuCursor cursor local static for select item, quantity from invset where sku = @sku open setskuCursor fetch next from setskuCursor into @invsetitem, @invsetqty while @@fetch_status = 0 begin
select @balsku = sku, @opendate = opendate from invbal where sku = @invsetitem if (@balsku is not null) begin if @txdate <= @opendate update invbal set slsqtynow = slsqtynow + @itmtxqty * @invsetqty where sku = @invsetitem if @txdate > @opendate update invbal set slsqtynxt = slsqtynxt + @itmtxqty * @invsetqty where sku = @invsetitem end else begin
end fetch next from setskuCursor into @invsetitem, @invsetqty end close setskuCursor deallocate setskuCursor -------------------------------------------------------------------
Recently I am facing a problem as, I have a trigger on table1 in after insert event. When i tried to insert data on table from 4 different source deadlock problem for causing trigger fire. Whenever I removed the trigger no dead lock occured. Can any one help me to handle this deadlock problem.
I have a weekly Maintenance Plan Reindex job that has failed because of a deadlock. My question seems simple enough and I'm ashamed to say I ought to know this answer, but here goes: Does the rest of a given job continue after such failures (this one was maybe 3/4 through the log) occur?
Is there a way to send out an email woth deadlock information (victim query, winner query, process id's and resources on which the deadlock occurred) as soon as a deadlock occurs in a database or at instance level?I currently has trace flag 1222 turned on. And also created an alert that send me an email whenever a deadlock occurs. but it just says that a deadlock occurred and I log into sql server error log and review the information.
I want to create a trigger on a view for insert, but I got a message said 'Invalid object name'. I can select from this view. Followings are my scripts and error message: (run on SQL 2000) create table t1 (c1 char (10) NULL ) create view vt as select * from t1 create table log1 (c1 datetime NULL )
create trigger tr1 ON t1 for insert AS insert into log1 values (getdate()) ----------all above succeed create trigger tr2 ON vt for insert AS insert into log1 values (getdate())
Server: Msg 208, Level 16, State 4, Procedure tr1, Line 1 Invalid object name 'vt'.
I have a logon trigger on a SQL Server 2008 R2 Express Advanced production database to prevent remote logons. The trigger works fine. When I need to connect via my local machine, remotely, I connect via a VPN, can connect with SSMS and do whatever I need. However, if I use a linked server on my local machine (still connected via VPN), I receive the logon error
Msg 17892, Level 14, State 1, Line 1 Logon failed for login 'sa' due to trigger execution.
The trigger is below and it logs any failures, except for the linked server.
If I disable the trigger, the linked server connects ok.
CREATE TRIGGER [tr_MasterLogon] ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON AS BEGIN DECLARE @ClientAddress varchar(48) = (SELECT client_net_address
So, I've written an Instead of Trigger to update a foreign key field based on information in another field of the same record.
To add some error handling to the process I updated the Trigger to insert any records that don't have legitimate foreign keys into a second table.
This process works great when I test it by just adding a record using the table view in the SQL Management Studio or through a query run in the query browser.
However, when a record is added via an ODBC connection I get foreign key constraint errors and records are not added to the second table. If the foreign key is legit the record is added and the part of trigger that updates that keyed field executes just fine.
Is anyone aware of this issue? Is there a way around it?
I found the following MSKB article but I'm not sure if it applies to my situation: http://support.microsoft.com/kb/304096
Here's my current code, if that track the problem in anyway:
Code:
ALTER TRIGGER UpdateTicketID ON Email Instead of INSERT AS IF ((Select charindex('{', [subject]) FROM Inserted) = 0) BEGIN INSERT INTO BadEmail ([Subject], Sender, Body, EntryID, LastModificationTime, AttachmentLInk, SendTo, Cc, ContactID) Select [Subject], Sender, Body, EntryID, LastModificationTime, AttachmentLink, SendTo, Cc, ContactID From Inserted END ELSE IF ((Select substring([subject], charindex('{', [subject])+1, (charindex('}', [subject]) - charindex('{', [subject]))-1) From Inserted) NOT In (Select TicketID From Ticket)) BEGIN INSERT INTO BadEmail ([Subject], Sender, Body, EntryID, LastModificationTime, AttachmentLInk, SendTo, Cc, ContactID) Select [Subject], Sender, Body, EntryID, LastModificationTime, AttachmentLink, SendTo, Cc, ContactID From Inserted END ELSE BEGIN INSERT INTO Email ([Subject], Sender, Body, ticketID, EntryID, LastModificationTime, AttachmentLink, SendTo, Cc, ContactID) Select [Subject] , Sender , Body , substring([subject], charindex('{', [subject])+1, (charindex('}', [subject]) - charindex('{', [subject]))-1) , EntryID , LastModificationTime , AttachmentLink , SendTo , Cc , ContactID From Inserted END
My company is thinking about moving to a product that uses Microsoft SQL Server and I have been asked to find out what are the Pros and Cons of the product, if any.
Anyone know where I could find some good articles about pros and cons of upgrading SQL 7 to SQL 2K?
Our boss suddenly got this bug up his rear that we need to upgrade. :( Probably because we are to a point where everything is running smoothly, and he needs to throw a monkey wrench in it.
We are a very small shop, and are not stressing SQL 7 in the least. I am interested to read some articles about SQL 2K, because right now, I can't see any possible reason an upgrade would be worth doing.
I have a requirement where I need to perform a query for positioninformation. But for some types of entries, I need to "expand" the rowto include additional position rows. Let me explain with an example:An index is a security that is made up of components where eachcomponent has a "weight" or a number of shares. So if I have 1 share ofthe index, I have X shares of each component.AAPL is an Equity, CSCO is an Equity, SPY is an Index. Lets say thatSPY has one component, AAPL, with shares being 10. (1 share of SPY = 10shares of AAPL).So, I do some trading and I end up with positions as follows:+10 AAPL-5 CSCO+2 SPYThe query I need returns:+10 AAPL-5 CSCO+2 SPY+20 AAPL (from 2 SPY * 10 shares)which becomes (after grouping):+30 AAPL-5 CSCO+2 SPY-----------------------------------------Based on that criteria and the following schema (and sample data):-- Drop tablesDROP TABLE [SecurityMaster]DROP TABLE [Position]DROP TABLE [IndexComponent]-- Create tablesCREATE TABLE [SecurityMaster] ([Symbol] VARCHAR(10), [SecurityType] VARCHAR(10))CREATE TABLE [Position] ([Account] VARCHAR(10), [Symbol] VARCHAR(10), [Position] INT)CREATE TABLE [IndexComponent] ([IndexSymbol] VARCHAR(10), [ComponentSymbol] VARCHAR(10), [Shares] INT)--Populate tablesINSERT INTO [SecurityMaster] VALUES ('AAPL', 'Equity')INSERT INTO [SecurityMaster] VALUES ('MSFT', 'Equity')INSERT INTO [SecurityMaster] VALUES ('MNTAM', 'Option')INSERT INTO [SecurityMaster] VALUES ('CSCO', 'Equity')INSERT INTO [SecurityMaster] VALUES ('SPY', 'Index')INSERT INTO [Position] VALUES ('001', 'AAPL', 10)INSERT INTO [Position] VALUES ('001', 'MSFT', -5)INSERT INTO [Position] VALUES ('001', 'CSCO', 10)INSERT INTO [Position] VALUES ('001', 'SPY', 15)INSERT INTO [Position] VALUES ('001', 'QQQQ', 21)INSERT INTO [Position] VALUES ('002', 'MNTAM', 10)INSERT INTO [Position] VALUES ('002', 'APPL', 20)INSERT INTO [Position] VALUES ('003', 'SPY', -2)INSERT INTO [IndexComponent] VALUES ('SPY', 'AAPL', 25)INSERT INTO [IndexComponent] VALUES ('SPY', 'CSCO', 50)INSERT INTO [IndexComponent] VALUES ('QQQQ', 'AAPL', 33)-- *****************************-- Based on the rules:-- 1) Index positions appear like other positions (account /symbol) pair, but-- its components show up as new rows of account (of index),symbol (equal--to component symbol), position (equal to shares * index position)-- 2) One row for each account / symbol pair (GROUP BY account andsymbol, SUM position)-- Expected output (without grouping) (sorted by account / symbol)-- 001 AAPL 10-- 001 AAPL 375 (component shares * index position) (25* 15) (SPY)-- 001 AAPL 693 (component shares * index position) (33* 21) (QQQQ)-- 001 CSCO 10-- 001 CSCO 750 (component shares * index position) (50* 15) (SPY)-- 001 MSFT -5-- 001 QQQQ 21-- 001 SPY 15-- 002 AAPL 20-- 002 MNTAM 10-- 003 AAPL -50 (component shares * index position) (25* -2) (SPY)-- 003 CSCO -100 (component shares * index position) (50* -2) (SPY)-- 003 SPY -2-- Expected output (with grouping account / symbol) (sorted by account/ symbol)-- 001 AAPL 1078-- 001 CSCO 760-- 001 MSFT -5-- 001 QQQQ 21-- 001 SPY 15-- 002 AAPL 20-- 002 MNTAM 10-- 003 AAPL -50-- 003 CSCO -100-- 003 SPY -2---------------------------------------------Is a UNION the best way to perform the query. What are the pros andcons? What, if any, is a better way?SELECT[Account], [Symbol], SUM([Position]) AS [Position]FROM(SELECT[Account], [Symbol] , [Position]FROM[Position]UNION ALLSELECTP.[Account] , IC.[ComponentSymbol] AS [Symbol] , (P.[Position] *IC.[Shares]) AS [Position]FROM[IndexComponent] ICJOIN[Position] PONP.[Symbol] = IC.[IndexSymbol]) DGROUP BY[Account], [Symbol]ORDER BY[Account], [Symbol]
Hi alli am building a SQL 2000 database that it is proving a littlechallenging, i have companies with multiple addresses, phone numbers,owning mine sites etc and also joint ventures so maybe you get thepicture with a few design issues that i ma encounteringMy queriy is about a primary key identity, and which one to use withrespect to either the identity data type or the unique identifier ,I am aessentiall building an address table to hold all multipleaddresses as well as phone numbers etc, so my desire to have a uniqueidentity for each record is very important.My view is i will run in to violation errors by just using the tableidentity data type, i could i suppose use composit primary keys butthat may have a performance impact, although thiis will not be a hightransaction database.Does anyone know about performance issues regarding each identitysolution, by using a generated 16 bit identifier there are going to behuge numbers for the DB to verify. or am i worried about nothing?any views greatly appreciatedregardsGreg
Im about to start converting code to Stored Procedures for all my reports in Reporting Services. I was wondering what the pros and cons of this may be.
It seems to me that either by accident or design, SQL Server tends to steer you away from backing up directly over the network.
Are there reasons for not doing this because you obviously don't want to leave your backups on a local drive in case the drive fails?
Some possibilties that I can think of are:-
1. Local drives have faster access times and SQL backups can get quite large. I did a quick test and found that a netwrok backup takes 2 to 3 times longer than it does on a local drive. 2. Backing up on the netwrok could hog too much bandwidth. I haven't tested this and would be surprised it it's true. 3. There could be some reason that you don't want the Server and Agent services running under a domain account but want to leave them on the Local System account. I am not aware of any such reasons by the way. 4. Local drives persumably have a slightly higher availability than network drives. If the server is running, the drive should be available.
Like in the subject: What are the cons and pros of using nvarchar(max) versus ntext? Does it have something to do with having to enable full text search perhaps in the latter case?
I'm just wondering what any pros and cons of using multivalue columns in a database are.
I'm designing a database which will have a column for FABRIC_TYPES_AVAILABLE for a certain FURNITURE_ITEM. Each FURNITURE_ITEM can have multiple FABRIC_TYPES_AVAILABLE of course. So I was just going to store a 2 or 3 digit number of the FABRIC_TYPES_AVAILABLE in that row. So I would have something like....34,24,453,32,23,45,67,65,43,21,21,45.
Anyway....thanks in advance for any information. Links I could read would be great too...b/c I did do a bit of searching, but didnt find much.
I have a main database...for this large Web site...and Im wondering what would be the PROS and CONS of using another database (located on the same, or on another SQL Server). Im just thinking this would be good incase we ever needed to take some load off one of the servers.
Also, we will be integrating Community Server into this Web site. Of course you know CS adds its own database objects which crowd up our main database objects.
We were thinking of giving CS its own database also; bad practice, or....it doesn't matter much?
I was wanting to know. I am making a site that might be come big. And me and this dude are considering pickering abotu GUID. I don't want to use them but he does. And I was wondering what should we do? I know nothing about guids
vinod writes "Q1>Should I apply filter in sequence(based on primarykey,not null,comparision,between clause) ?
-How to apply filter in correct format,and SQL server internally execute it. Q2>Should I use 'is not Null' to be put at the last?
Q3>Should I use 'between clause' rather than relation operator i.e(empid>10 and empid<200)
Q4>Does filters of sequence has any impact on the query execution process
table1[pkey1,col1,col2,col3] -->pkey is pkey1 table2[pkey2,pkey1,col11,col12,col13]--->pkey is pkey2, and pkey1 is foreign key
CaseI->select table2.pkey2,table1.col1 ,table2.col12 from table1 inner join table2 on table1.pkey1=table2.pkey1 where (table1.col3>100 and table1.col3<300 ) and table2.pkey1=2020 and table2.col13 is not null
CaseII->select table2.pkey2,table1.col1 ,table2.col12 from table1 inner join table2 on table1.pkey1=table2.pkey1 where (table1.col3 between 101 and 299 ) and pkey1=2020 and table2.col13 is not null"
Are there any vices to using default constraints on all columns in your table. For example an Int that defaults to 0 or a char or varchar that defaults to ''
I know that 0 and Null are not the same thing. But if your programs don't have the concept of NULL then you have to convert the NULL to zero.
So, DEFAULT CONSTRAINTS on every column. Is it good or Bad?
Can someone provide information or a link to information regarding the pros and cons of saving files directly into a SQL 2005 database? I'm actually for saving files to a database (cleaner implementation then just saving the location then having to get the file, etc), but my project manager is not convinced so I need to make an argument for (or against depending on what I actually find out) using varbinary data type. Thanks.
Hi All!We are doing new development for SQL Server 2000 and also moving fromSQL 7.0 to SQL Server 2000.What are cons and pros for using IDENTITY property as PK in SQL SERVER2000?Please, share your experience in using IDENTITY as PK .Does SCOPE_IDENTITY makes life easier in SQL 2000?Is there issues with DENTITY property when moving DB from one serverto another? (the same version of SQL Server)Thank you in advance,Andy
hi all, I was wondering if anyone knows of any pros/cons on storing SSIS (2005) packages within SQL Server 2005 SP2. We're contemplating the migration/storage of a large number of packages, a minority of which designed in dts (SQLServer 2000) and using third party activx components.
We are in the process of replacing our primary production server. In the process of determining how SQL server is going to be structured, it has been suggested that I place all current and new indexes on a separate file group. These filegroups would then reside on a separate shelf on the server. What are the pros and cons of doing this?
I am using transaction replication between a transaction and reporting database server. When I use a snapshot to initialize my subscribers, I currently get a lot of deadlocks during the snapshot creation. I am considering using a database backup instead. Can anyone tells me how to reduce the table locks that I am getting during snapshot creation or advice on using database backups?
All the logins with sysadmin role are locked out in one of the SQL server. Also in that instance Logon trigger is implemented which allows only certain users with Windows Authentication to logon.
This server is converted into single user mode by using command prompt. Now we are attempting to connect to SQLServer using command sqlcmd -S FTCPU3239 (since we do not have any other login) and create a new login with sysadmin role but are refused due to logon trigger. it says Login failed for login 'DomainNameUserName' due to trigger execution.
Hey Guys, I'm not sure if anyone can help me with this but I am trying to achieve the following: I have a row (In this case it is information on a fix) and on a button click I am trying to get it to "archive" it. At the moment I have it so that it it takes the current information and adds it to the archive table adding an archive date. The thing that I am struggling with is incrementing the version number. So, I need it to (in these steps I think) - Look for existance of the other entires of that ID, look for the version number that is related to the newest date of those knowledgeIDs and then add 1 to it. If that knowledgeID doesnt exist then add it as one. My current code is below: Thanks in Advance =) C# Codeprotected void Page_Load(object sender, EventArgs e) {UserName = (string)Session["UserName"]; Label4.Text = UserName + " Is Current Logged In";UserType = (string)Session["UserType"];if ((Session["UserName"] != null) & (UserType == "Helpdesk")) {Response.Redirect("Accessrights.aspx"); }else if (Session["UserName"] == null) {Response.Redirect("Login.aspx"); } FixName = "default";Description = "default";File = "default"; ADate = myCalendar.TodaysDate.ToShortDateString(); AddDate = Convert.ToDateTime(ADate);myConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\inetpub\wwwroot\HOF\App_Data\HOF.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;"; }protected void Button1_Click(object sender, EventArgs e) {SqlConnection myConnection = new SqlConnection(myConnectionString); try { FixName = TextBox1.Text; SqlCommand myCommand = new SqlCommand("select * from Knowledge WHERE FixName like '%" + FixName + "%'", myConnection); myConnection.Open();SqlDataReader myReader = myCommand.ExecuteReader();if (myReader.HasRows) {while (myReader.Read()) { TextBox1.Text = myReader["FixName"].ToString();TextBox2.Text = myReader["Description"].ToString(); File = myReader["Location"].ToString();if (File != null) { TextBox3.Text = File; } else {TextBox3.Text = "There is no script avaliable"; }KnowledgeID = myReader["KnowledgeID"].ToString();Add = myReader["DateAdded"].ToString(); } myConnection.Close(); } else {TextBox1.Text = FixName + "Does not Exist. Please try again."; } }catch (Exception ex) { myConnection.Close(); } try Description = TextBox2.Text;File = Convert.ToString(FileUpload1.FileName);if (CheckBox1.Checked == true) {SAPPS = "True"; } else {SAPPS = "False"; } {SqlCommand mycommand2 = new SqlCommand("INSERT INTO Knowledge (FixName, Description, Location, DateAdded, DateArchived, Version, KnowledgeID) SET ('" + FixName + "','" + Description + "','" + File + "','" + Add + "','"+AddDate+"','" + SAPPS + "','"+I NEED A VALUE HERE+"','"+KnowledgeID+"')", myConnection);SqlDataAdapter myDataAdapter = new SqlDataAdapter(mycommand2); sa = mycommand.ExecuteNonQuery(); myConnection.Close(); }catch (Exception ex) { myConnection.Close(); } }