Solved

Does MS SQL Server store an Internal ID for each row

Posted on 2004-04-19
12
1,061 Views
Last Modified: 2008-02-01
We have a table in which a backup was imported twice and as a result each row is there twice. So there is no way to uniquely identify each row because they duplicates have identical everything including the IDENTITY field

Does MS SQL Server make a value available that tells us which row is more recent, some internal row ID?

0
Comment
Question by:moonrise
  • 5
  • 3
  • 3
  • +1
12 Comments
 
LVL 34

Expert Comment

by:arbert
ID: 10865108
Nope.  Do you just want to delete a duplicate?
0
 
LVL 34

Expert Comment

by:arbert
ID: 10865128
Is the recovery mode on your database set to full?  If so, you could also backup the log and then do a point in time restore before the import was done the second time.
0
 

Author Comment

by:moonrise
ID: 10865184
Yes, I just want to delete duplicates, but duplicates are identical

We cannot restore because more live data is being created every second
0
 
LVL 34

Expert Comment

by:arbert
ID: 10865231
acperkins had a good solution on this post--it's actually much easier since you have an identity on the table:

http://www.experts-exchange.com/Databases/Microsoft_SQL_Server/Q_20381662.html


you might want to consider adding a unique index or primary key to avoid this in the future.

Brett
0
 

Author Comment

by:moonrise
ID: 10865523
The solution mentionned assumes that the duplicates have different values for at least one field, in that case record_id. In my situation we don't have any field different.
0
 
LVL 34

Expert Comment

by:arbert
ID: 10865539
Yes, didn't you say there was an identity field on each record?  That's your different value....
0
Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

 
LVL 34

Expert Comment

by:arbert
ID: 10865549
Ahhhh, unless you used SET IDENTITY_INSERT and inserted duplicate Idents?
0
 
LVL 4

Expert Comment

by:kssaran
ID: 10866326
Hi Moonrise,

Try something using property called ROWGUIDCOL(Globally Unique Identifiers)  & see if you can get some result of what u wanted

Rgds
Sara
0
 
LVL 13

Accepted Solution

by:
danblake earned 250 total points
ID: 10866631
Moonrise,

You're going to need a seperate table, like this:
http://support.microsoft.com/default.aspx?scid=kb;en-us;70956

Or alternativly create the second seperate table and a covering index (with ignore dups option on) then populate the table with your rows and truncate the original table, copying from the second table to the first.
http://www.experts-exchange.com/Databases/Microsoft_SQL_Server/Q_20956727.html
(There's a reason why this question is still open..)
(This is a better way of achieving what you want than the KB article from MS)

This should remove the dups quickly.

Rgds,

Dan.
0
 
LVL 13

Expert Comment

by:danblake
ID: 10866646
or not even a truncate -- you could run a delete where rows exist in the second table only, and then enable an indentity insert on again to ensure you can still populate to your live table... But it does depend on how many rows we are dealing with here as to the best mechanism for attack....

Alternativly you can write a procedure to trap the error code returned from ignore dups, and delete the highest occuring duplicate (with a copy in a second table) from the first then populate this record back into the original table.

There are many ways of deleting these dups.
0
 

Author Comment

by:moonrise
ID: 10869581
thank you
0
 
LVL 13

Expert Comment

by:danblake
ID: 10869758
No worries moonrise, glad to help.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

In this article—a derivative of my DaytaBase.org blog post (http://daytabase.org/2011/06/18/what-week-is-it/)—I will explore a few different perspectives on which week today's date falls within using Microsoft SQL Server. First, to frame this stu…
Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now