Вы можете использовать Представления и Синонимы, чтобы скрыть изменения схемы.
Таким образом, для простых вещей (например, InvalidTable
теперь ValidTable
), вы можете определить синоним
CREATE SYNONYM InvalidTable FOR CorrectSchema.ValidTable;
Для более сложных вещей (столбцы, JOIN, разбиения таблиц, типы данных и т. Д.) Вам нужно представление
CREATE VIEW InvalidTable
AS
SELECT
col1, col2,
CAST(col3 AS varchar(1000)) AS col3, -- fix data type
1 AS col4 -- not used now, but expected in legacy calls
FROM
CorrectSchema.ValidTable
WHERE
col5 = 'Something'
GO
Редактировать, после того, как ОП поймет, что они обманули себя
Вы не можете иметь представление или синоним, если в одной базе данных существует таблица с таким же именем.
Итак, используйте другую БД и используйте вместо этого устаревшее приложение. В этих примерах вы бы имели DataTable в другой БД, предполагая, что вы можете использовать другую БД без изменения кода
USE legacyDB
GO
CREATE VIEW DataTable
AS
SELECT
*
FROM
CorrectDB.CorrectSchema.ValidTable V
JOIN
CorrectDB.CorrectSchema.OtherTable O ON ...
GO
В противном случае переименуйте правильную БД и укажите весь не унаследованный код в переименованной БД.