IDENTITY Eigenschaft entfernen

By Frank Kalis

Posted on Nov 25, 2010 von in SQL Server

So einfach und leicht das Definieren der IDENTITY Eigenschaft für eine numerische Spalte ist, so umständlich und wenig intuitiv ist das Entfernen dieser Eigenschaft später wieder. Es gibt tatsächlich keinen direkten Weg, so wie ALTER TABLE DROP IDENTITY oder ALTER TABLE ALTER COLUMN...

Der vielleicht einfachste Weg ist es, den Enterprise Manager zu öffnen, die entsprechende Änderung an der Tabelle zu machen, und anschließend - anstatt zu "Speichern" - sich ein Änderungsskript generieren zu lassen. Vorteil hierbei ist zumindest, daß man dieses Skript dann laufen lassen kann, wenn gerade nicht viel in der Datenbank los ist. Denn was der EM hier generiert, ist ein Skript welches eine neue Tabelle erstellt, die Daten herüberkopiert, die Originaltabelle löscht, und die Kopie mit dem Namen der gelöschten Tabelle umbenennt. Mann kann sich hier durchaus vorstellen, daß diese Vorgehenweise bei umfangreichen Tabellen und vorhandenen Indexes weder schnell noch efizient ist. Daher kann man dieses Verfahren auch eigenhändig durchführen; doch anstelle der Brechhammermethode des EM, mit etwas mehr chirugischer Präzision. Etwas so:

ALTER TABLE < Tabellenname >
ADD < Neue Spalte > INT NULL
GO

UPDATE < Tabellenname >
SET < Neue Spalte > = < IDENTITY Spalte >
GO

ALTER TABLE < Tabellenname >
DROP COLUMN < IDENTITY Spalte >
GO

ALTER TABLE < Tabellenname >
ALTER COLUMN < Neue Spalte > INT NOT NULL
GO

EXEC sp_rename '< Tabellenname > .< Neue Spalte >', '< IDENTITY Spalte >'
GO

So, dieses Skript hat zumindest den Vorteil, daß nur die Teile der Tabelle bearbeitet werden, die auch wirklich betroffen sind.

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: , ,

Noch kein Feedback


Formular wird geladen...