Изменение размера столбца, на который ссылается представление со схемой в SQL Server - PullRequest
124 голосов
/ 24 августа 2009

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

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 - это представление, созданное предыдущим администратором БД.

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

Ответы [ 6 ]

256 голосов
/ 22 марта 2012
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
58 голосов
/ 24 августа 2009

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

С MSDN :

SCHEMABINDING

Связывает представление со схемой базовой таблицы или таблиц. когда SCHEMABINDING указан, база таблица или таблицы не могут быть изменены в способ, который повлияет на вид определение. само определение вида сначала необходимо изменить или удалить в удалить зависимости от таблицы, должен быть изменен.

6 голосов
/ 14 июля 2014

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

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

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

5 голосов
/ 24 августа 2009

см. Ссылку

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

решение для такой проблемы SQL Server будет

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

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

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

Bye

2 голосов
/ 04 декабря 2013

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

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


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

select * from class

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

alter table class modify facid varchar (5);

alter table class modify classnumber varchar(11);

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

select * from class;

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


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

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

0 голосов
/ 02 августа 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...