OK, I've come up with at least one way to do it.
I've added two columns to the import table, [DupeCandidateImport].
[SequenceSeed] [int] IDENTITY(0,1) NOT NULL,
[AppSequenceNumber] [int] NULL
Before I import data I'll do
TRUNCATE TABLE [DupeCandidateImport]
GO
DBCC CHECKIDENT ('DupeCandidateImport', RESEED, 0)
GO
It's my understanding that have the seed value of the identity column defined as 0 requires the explicit call to DBCC CHECKIDENT to start the column over at 0. I guess I could avoid that by offsetting my update described below by -1, but if this works it seems better (sort of).
When I import the new candidates I'll get 0...NumRows in the [DupeCandidateImport].[SequenceSeed] column. Then SET @maxSeed = MAX([DupeCandidateImport].[SequenceSeed] and UPDATE [IntegerSeed].[SeedValue] to [IntegerSeed].[SeedValue] + @maxSeed. Then I'll UPDATE [DupeCandidateImport].[AppSequenceNumber] to [DupeCandidateImport].[SequenceSeed] + @maxSeed.
Now I've got a street legal SequenceNumber I can use when I do my INSERT into [IPMergeRequest].
That seems a bit convoluted ( 🙂 ), but it does excercise the IDENTITY property to get the sequential numbers, and requires only a single UPDATE to the [IntegerSeed] table. Now the INSERT to [IPMergeRequest] is isolated from any further messing about with [IntegerSeed] and concerns about possible collisions with other users.