Как я уже прокомментировал, я подозреваю, что у вас есть по крайней мере один объект, который использует предложение WITH SCHEMABINDING
в его CREATE
/ ALTER
, и поэтому вы не можете изменить объект таблицы.Вам нужно будет DROP
и воссоздать этот объект.Например:
USE Sandbox;
GO
CREATE TABLE dbo.Dinner (ID int, Meal varchar(20));
GO
CREATE VIEW dbo.Dinners WITH SCHEMABINDING AS
SELECT DISTINCT Meal
FROM dbo.Dinner;
GO
CREATE SCHEMA menu;
GO
ALTER SCHEMA menu TRANSFER dbo.Dinner; --Fails
GO
DROP VIEW dbo.Dinners;
GO
ALTER SCHEMA menu TRANSFER dbo.Dinner; --Succeeds
GO
CREATE VIEW dbo.Dinners WITH SCHEMABINDING AS
SELECT DISTINCT Meal
FROM menu.Dinner;
GO
--Ceal up
DROP VIEW dbo.Dinners;
DROP TABLE menu.Dinner;
DROP SCHEMA menu;
Вы можете получить список зависимостей, используя:
SELECT DISTINCT
o.[name],
o.[type_desc]
FROM sys.sql_expression_dependencies sed
JOIN sys.objects o ON sed.referencing_id = o.object_id
WHERE sed.referenced_schema_name = N'dbo'
AND sed.referenced_entity_name = N'Dinner';