This script allows for testing if rows will cause a primary key violations prior to inserting the data. Offending rows are stored in a table so they can be used in subsequent queries or used to debug bad data issues.
This updated version adds a timestamp to the duplicates table so that identifying when the duplicate occurred is easier. This is really helpful if you have scheduled data uploads and can track when a bulk insert from a file was performed.
This can be called from any database and will identify duplicates in the select statement as well as the target table
Split and PrimaryKeyColumns functions are called by the stored procedure and are included in the post.