4966: Fehler bei der ALTER TABLE SWITCH-Anweisung.
Fehlermeldung:
Meldung 4966, Ebene 16, Status 1, Zeile 2
Fehler bei der ALTER TABLE SWITCH-Anweisung. Die berechnete '%1!'-Spalte, die als '%2!' in der '%3!'-Tabelle definiert ist, weicht von der gleichen Spalte in der '%4!'-Tabelle ab, die als '%5!' definiert ist.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, eine ALTER TABLE SWITCH Anweisung auszuführen, bei der eine berechnete Spalte gleichen Namens in Quell- und Zieltabelle eine abweichende Definition besitzt.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Die Definition der berechneten Spalte muss in beiden Tabellen identisch sein.
Versionen:
Diese Fehlermeldung wurde mit SQL Server 2005 eingeführt.
Beispiele:
USE Pubs
GO
SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING,
ANSI_WARNINGS,
CONCAT_NULL_YIELDS_NULL,
ARITHABORT,
QUOTED_IDENTIFIER,
ANSI_NULLS ON;
GO
CREATE PARTITION FUNCTION myPartFunction (int)
AS RANGE LEFT FOR VALUES (1, 10, 100);
GO
CREATE PARTITION SCHEME myPartScheme
AS PARTITION myPartFunction
ALL TO ([PRIMARY]);
GO
CREATE TABLE myPartTable
(
c1 int,
c2 AS c1 * 3
)
ON myPartScheme (c1);
GO
CREATE TABLE myNonPartTable
(
c1 int,
c2 AS c1 * 2
)
ON [PRIMARY];
GO
ALTER TABLE myPartTable SWITCH PARTITION 1 TO dbo.myNonPartTable ;
GO
DROP TABLE myNonPartTable, myPartTable;
DROP PARTITION SCHEME myPartScheme;
DROP PARTITION FUNCTION myPartFunction;
Anmerkungen:
Im obigen Beispiel wird versucht in der ALTER TABLE SWITCH Anweisung auszuführen. Da die Spalte c2 in der Quelltabelle als c1 * 3, in der Zieltabelle hingegen als c1 * 2 definiert ist, wird der Fehler ausgelöst.