Изменение размера столбца, на который ссылается связанный с схемой вид в SQL Server

Я пытаюсь изменить размер столбца на сервере sql, используя:

ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL

где длина Addr1 была первоначально 40.

Не удалось выполнить эту ошибку:

The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access 
this column.

Я попытался прочитать его, и кажется, что, поскольку некоторые представления ссылаются на этот столбец, и кажется, что SQL Server фактически пытается удалить столбец, который вызвал ошибку.

Address_e - это представление, созданное предыдущим администратором базы данных.

Есть ли другой способ изменить размер столбца?

Ответ 1

Представления, вероятно, создаются с использованием опции WITH SCHEMABINDING, и это означает, что они явно подключены для предотвращения таких изменений. Похоже, что схематизация работала и мешала вам нарушать эти взгляды, счастливый день, хе-хе? Обратитесь к администратору базы данных и попросите его внести изменения после того, как он подтвердит влияние на базу данных.

От MSDN:

SCHEMABINDING

Привязывает представление к схеме базовой таблицы или таблиц. когда СХЕМА ОБРАБОТКИ указывается, база таблица или таблицы не могут быть изменены в способ, который повлияет на представление определение. Само определение представления необходимо сначала изменить или отбросить на удалить зависимости от таблицы, которые должен быть изменен.

Ответ 2

ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)

Ответ 3

Если кто-то хочет "Увеличить ширину столбца реплицированной таблицы" в SQL Server 2008, то нет необходимости изменять свойство "replicate_ddl=1". Просто выполните следующие шаги -

  • Открыть SSMS
  • Подключиться к базе данных издателя
  • команда запуска - ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
  • Это увеличит ширину столбца от varchar(x) до varchar(22) и то же самое изменение, которое вы можете увидеть у абонента (транзакция получена реплицирована). Поэтому нет необходимости повторно инициализировать репликацию.

Надеюсь, это поможет всем, кто его ищет.

Ответ 4

Смотрите эту ссылку

Изменить размер или изменить столбец таблицы MS SQL Server с ограничениями по умолчанию с помощью команд T-SQL

решение для такой задачи SQL Server будет

Удаление или отключение ограничения DEFAULT в столбце таблицы.

Изменение типа данных столбца таблицы и/или размера данных.

Повторное создание или включение ограничения по умолчанию в столбце таблицы sql.

Bye

Ответ 5

вот что работает с версией программы, которую я использую: может работать и для вас.

Я просто поставлю инструкцию и команду, которая это сделает. class - это имя таблицы. вы меняете его в таблице своим "я" с помощью этого метода. а не только возврат на процесс поиска.


просмотреть класс таблицы

select * from class

измените длину столбцов FacID (рассматривается как "faci" ) и classnumber (рассматривается как "classnu" ) для соответствия всем ярлыкам.

alter table class modify facid varchar (5);

alter table class modify classnumber varchar(11);

снова просмотрите таблицу, чтобы увидеть разницу

select * from class;

(снова запустите команду, чтобы увидеть разницу)


Это изменяет фактическую таблицу навсегда, но лучше.

P.S. Я сделал эти инструкции как примечание для команд. Это не тест, но может помочь в одном:)

Ответ 6

Проверьте сопоставление столбцов. Этот script может изменить сортировку на таблицу по умолчанию. Добавьте текущую сортировку в script.