Erstellen PK für die #temp-Tabelle ist fehlgeschlagen, wenn das Skript ausgeführt wird, parallel

Ich habe den folgenden code in eine gespeicherte Prozedur.

....
select ... into #temp from ....
alter table #temp add constraint PK_mytemp13 primary key (....)
....

Und ich bekomme folgende Fehlermeldung von Zeit zu Zeit, wenn die gespeicherte Prozedur ausgeführt wird, parallel.

Es ist bereits ein Objekt mit dem Namen 'PK_perf322dsf" in der Datenbank.
Es konnte keine Einschränkung. Finden Sie in Vorherige Fehlern.

Ich denke, es kann vermieden werden, indem die folgenden Ansätze. Gibt es eine andere elegantere Lösung?

  1. Erstellen Sie eine temporäre Tabelle mit primary key-ersten. Dann die Zeilen einfügen.
    create table #temp (... primary key (....))
  2. Erstellen PK dynamisch mit session-id dynamisch.
    declare @s varchar(500) = 'alter table #temp add constraint PK_temp' + @@spid + ' primary key (....)

InformationsquelleAutor ca9163d9 | 2012-01-16

Schreibe einen Kommentar