Msg 4966, Level 16, State 1, Line 2
ALTER TABLE SWITCH statement failed. Computed column ‘%.*ls’ defined as ‘%.*ls’ in table ‘%.*ls’ is different from the same column in table ‘%.*ls’ defined as ‘%.*ls’.
This error message appears when you try to execute an ALTER TABLE SWITCH command, for which a computed column of the same name has a different definition in the source and target table.
The T-SQL statement can be parsed, but causes the error at runtime.
Errors of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. The definition of the computed column must be the same in source and target.
This error message was introduced with SQL Server 2005.
SET NUMERIC_ROUNDABORT OFF;
CREATE PARTITION FUNCTION myPartFunction (int)
AS RANGE LEFT FOR VALUES (1, 10, 100);
CREATE PARTITION SCHEME myPartScheme
AS PARTITION myPartFunction
ALL TO ([PRIMARY]);
CREATE TABLE myPartTable
c2 AS c1 * 3
ON myPartScheme (c1);
CREATE TABLE myNonPartTable
c2 AS c1 * 2
ALTER TABLE myPartTable SWITCH PARTITION 1 TO dbo.myNonPartTable ;
DROP TABLE myNonPartTable, myPartTable;
DROP PARTITION SCHEME myPartScheme;
DROP PARTITION FUNCTION myPartFunction;
In the above example we try to execute an ALTER TABLE SWITCH command. Because the computed column c2 has a definition of c1 * 3 in the source table, but c1 * 2 in the target table, the error is raised.