Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Здравствуйте!
Раньше, в MS SQL SERVER 2005 можно было менять свойства столбцов таблиц прямо в редакторе "Свойства столбца", причем в любое время, когда это потребуется.
Теперь, в MS SQL SERVER 2008, после создания и сохранения любой таблицы, при изменении любого свойства любого столбца, появляется ошибка. То есть изменить что-то в таблице теперь можно только с помошью ALTER TABLE.
Можно ли это в настройках отключить и сделать возможным изменение свойств столбцов в редакторе?
26 май 09, 14:51    [7228981]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930


К сообщению приложен файл. Размер - 0Kb
26 май 09, 14:51    [7228985]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы наверное перепутали ошибку с сообщением о том, что для изменения таблицы через drop/create нужно разрешить такое действие в опциях студии
26 май 09, 14:53    [7228998]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
Вы наверное перепутали ошибку с сообщением о том, что для изменения таблицы через drop/create нужно разрешить такое действие в опциях студии

Ну это я просто так выразился. А только не подскажете где именно эта настройка лежит (их так много...)
26 май 09, 14:58    [7229051]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Теперь, в MS SQL SERVER 2008, после создания и сохранения любой таблицы,
> при изменении любого свойства любого столбца, появляется ошибка. То есть
> изменить что-то в таблице теперь можно только с помошью ALTER TABLE.
> Можно ли это в настройках отключить и сделать возможным изменение
> свойств столбцов в редакторе?

в англоязычном варианте это:
Tools - Options - Table and Database Designers - Prevent saving changes that require table re-creation.

и еще - вам тонко намекают, что ssms будет производить
сделанные вами изменения отнюдь не с помощью alter table, а
путем пересоздания таблицы. подумайте, надо ли вам такое?

Posted via ActualForum NNTP Server 1.4

26 май 09, 15:00    [7229070]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
daw

> Теперь, в MS SQL SERVER 2008, после создания и сохранения любой таблицы,
> при изменении любого свойства любого столбца, появляется ошибка. То есть
> изменить что-то в таблице теперь можно только с помошью ALTER TABLE.
> Можно ли это в настройках отключить и сделать возможным изменение
> свойств столбцов в редакторе?

в англоязычном варианте это:
Tools - Options - Table and Database Designers - Prevent saving changes that require table re-creation.

и еще - вам тонко намекают, что ssms будет производить
сделанные вами изменения отнюдь не с помощью alter table, а
путем пересоздания таблицы. подумайте, надо ли вам такое?

Одно не понимаю: почему надо было так сделать, когда вместо пересоздания в ответ на действия пользователя с редактором SQL-серверу просто не сделать ALTER? В чем тут рациональность?
26 май 09, 15:03    [7229104]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Одно не понимаю: почему надо было так сделать, когда вместо пересоздания
> в ответ на действия пользователя с редактором SQL-серверу просто не
> сделать ALTER? В чем тут рациональность?

дело в том, что ALTER сделать как раз не так просто.
а в некоторых случаях (например, вставка столбца между другими столбцами,
установка/снятие identity) - и вообще невозможно.

Posted via ActualForum NNTP Server 1.4

26 май 09, 15:06    [7229141]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov

Одно не понимаю: почему надо было так сделать, когда вместо пересоздания в ответ на действия пользователя с редактором SQL-серверу просто не сделать ALTER? В чем тут рациональность?

Ну ка попробуйте "просто не сделать ALTER" для столбца входящего в индекс, констрейнт или вычисляемое поле
26 май 09, 15:09    [7229176]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
daw

> Одно не понимаю: почему надо было так сделать, когда вместо пересоздания
> в ответ на действия пользователя с редактором SQL-серверу просто не
> сделать ALTER? В чем тут рациональность?

дело в том, что ALTER сделать как раз не так просто.
а в некоторых случаях (например, вставка столбца между другими столбцами,
установка/снятие identity) - и вообще невозможно.

Может сервер так и работает: когда возможно простое применение ALTER (например изменение наименования столбца), то соответственно ALTER, если это не возможно, то DROP/CREATE ?
26 май 09, 15:12    [7229210]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov

Одно не понимаю: почему надо было так сделать, когда вместо пересоздания в ответ на действия пользователя с редактором SQL-серверу просто не сделать ALTER? В чем тут рациональность?

Ну ка попробуйте "просто не сделать ALTER" для столбца входящего в индекс, констрейнт или вычисляемое поле

Но теоретически же это возможно сделать ALTER для столбца входящего в индекс, просто при этом пересобрать индекс и все.
26 май 09, 15:16    [7229249]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
rsolanov
daw

> Одно не понимаю: почему надо было так сделать, когда вместо пересоздания
> в ответ на действия пользователя с редактором SQL-серверу просто не
> сделать ALTER? В чем тут рациональность?

дело в том, что ALTER сделать как раз не так просто.
а в некоторых случаях (например, вставка столбца между другими столбцами,
установка/снятие identity) - и вообще невозможно.

Может сервер так и работает: когда возможно простое применение ALTER (например изменение наименования столбца), то соответственно ALTER, если это не возможно, то DROP/CREATE ?
Если кто-то так и работает, то точно не сервер.
Например, в начале темы Вы говорили не о сервере, а о программе "SQL Server Management Studio".
Может, эта программа так и работает. Не знаю.
26 май 09, 15:16    [7229250]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Glory
rsolanov

Одно не понимаю: почему надо было так сделать, когда вместо пересоздания в ответ на действия пользователя с редактором SQL-серверу просто не сделать ALTER? В чем тут рациональность?

Ну ка попробуйте "просто не сделать ALTER" для столбца входящего в индекс, констрейнт или вычисляемое поле

Но теоретически же это возможно сделать ALTER для столбца входящего в индекс, просто при этом пересобрать индекс и все.

Да что вы говорите ! А мужики то видать про теорию ничего не знают.
26 май 09, 15:18    [7229263]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
iap
rsolanov
daw

> Одно не понимаю: почему надо было так сделать, когда вместо пересоздания
> в ответ на действия пользователя с редактором SQL-серверу просто не
> сделать ALTER? В чем тут рациональность?

дело в том, что ALTER сделать как раз не так просто.
а в некоторых случаях (например, вставка столбца между другими столбцами,
установка/снятие identity) - и вообще невозможно.

Может сервер так и работает: когда возможно простое применение ALTER (например изменение наименования столбца), то соответственно ALTER, если это не возможно, то DROP/CREATE ?
Если кто-то так и работает, то точно не сервер.
Например, в начале темы Вы говорили не о сервере, а о программе "SQL Server Management Studio".
Может, эта программа так и работает. Не знаю.

Разницу между сервером и SQL Server Management Studio конечно я вижу, ну просто так выразился.
26 май 09, 15:19    [7229268]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
Glory
rsolanov

Одно не понимаю: почему надо было так сделать, когда вместо пересоздания в ответ на действия пользователя с редактором SQL-серверу просто не сделать ALTER? В чем тут рациональность?

Ну ка попробуйте "просто не сделать ALTER" для столбца входящего в индекс, констрейнт или вычисляемое поле

Но теоретически же это возможно сделать ALTER для столбца входящего в индекс, просто при этом пересобрать индекс и все.

Да что вы говорите ! А мужики то видать про теорию ничего не знают.

Хорошо, подскажите пожалуйста, какие статьи (общее название) в BOL нужно изучить, чтобы узнать про это?
26 май 09, 15:23    [7229316]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov

Хорошо, подскажите пожалуйста, какие статьи (общее название) в BOL нужно изучить, чтобы узнать про это?

Про что конкретно ?
Про ограничения ALTER TABLE написано в статье про ALTER TABLE
26 май 09, 15:27    [7229372]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov

Хорошо, подскажите пожалуйста, какие статьи (общее название) в BOL нужно изучить, чтобы узнать про это?

Про что конкретно ?
Про ограничения ALTER TABLE написано в статье про ALTER TABLE

Но там только перечислены ограничения на изменения:

Нельзя изменять следующие столбцы.

Столбец с типом данных timestamp.

Свойство ROWGUIDCOL для таблицы.

Вычисляемый столбец или используемый в вычисляемом столбце.

Используется в индексе, если столбец не принадлежит к типу данных varchar, nvarchar или varbinary, тип данных не изменяется и новый размер больше старого или равен ему, а индекс не является результатом применения ограничения PRIMARY KEY.

Используемый в статистике, сформированной с помощью инструкции CREATE STATISTICS, если только столбец не принадлежит к типу данных varchar, nvarchar или varbinary, тип данных не изменялся и новый размер больше старого или равен ему, а значение столбца не заменялось значением NULL. Во-первых, удалите статистику, используя инструкцию DROP STATISTICS. Статистика, автоматически сформированная оптимизатором запросов, автоматически удаляется инструкцией ALTER COLUMN.

Используется в ограничении PRIMARY KEY или [FOREIGN KEY] REFERENCES.

Используется в ограничениях CHECK или UNIQUE. Однако допустимо изменение длины столбца изменяемой длины, используемого в ограничении CHECK или UNIQUE.

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

Тип данных столбцов text, ntext и image может быть изменен только следующими способами:

text на varchar(max), nvarchar(max) или xml;

ntext на varchar(max), nvarchar(max) или xml;

image на varbinary(max).

Некоторые изменения типов данных могут повлечь за собой изменения в данных. Например, изменение столбца типа nchar или типа nvarchar на char или varchar может вызвать преобразование символов национальных алфавитов. Дополнительные сведения см. в разделе Функции CAST и CONVERT (Transact-SQL). Снижение точности или масштаба столбца может привести к усечению данных.

Нельзя изменять тип данных столбца секционированной таблицы.

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.
26 май 09, 15:39    [7229486]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.
26 май 09, 15:50    [7229585]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.

Вот видите, это же вовсе не означает что по крайней мере пусть не на практическом, а на теоретическом уровне это не возможно? Ведь так?
26 май 09, 15:55    [7229628]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Glory
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.

Вот видите, это же вовсе не означает что по крайней мере пусть не на практическом, а на теоретическом уровне это не возможно? Ведь так?

Ну вот тогда и пишите запросы на теоритическом уровне. В чем проблема то.
26 май 09, 15:57    [7229650]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
rsolanov
Glory
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.

Вот видите, это же вовсе не означает что по крайней мере пусть не на практическом, а на теоретическом уровне это не возможно? Ведь так?
Теоретически всегда можно дропнуть всю базу, а потом её создать заново с учётом Вашего ALTER TABLE!
Что-то Microsoft на это не согласен...
26 май 09, 15:59    [7229671]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
Glory
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.

Вот видите, это же вовсе не означает что по крайней мере пусть не на практическом, а на теоретическом уровне это не возможно? Ведь так?

Ну вот тогда и пишите запросы на теоритическом уровне. В чем проблема то.

Это Вы хорошо сказали, всем спасибо за помощь!
26 май 09, 15:59    [7229675]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
iap
rsolanov
Glory
rsolanov

Как видно, там есть перечень, но нет ответа на "почему", например почему нельзя сделать ALTER для столбца входящего в индекс. Именно этот момент важен, может быть чтобы лучше понять индексы и возможно не только для меня одного.

За ответом на вопрос "почему" обращаетесь к команде разработчиков mssql.

Вот видите, это же вовсе не означает что по крайней мере пусть не на практическом, а на теоретическом уровне это не возможно? Ведь так?
Теоретически всегда можно дропнуть всю базу, а потом её создать заново с учётом Вашего ALTER TABLE!
Что-то Microsoft на это не согласен...

Опять!..
Да зачем дропнуть, даже теоретически?
Надо создавать теоретическую подоплеку и возможности реализовать функциональность изменения таблицы без DROP/CREATE на практике!
26 май 09, 16:04    [7229715]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov

Надо создавать теоретическую подоплеку и возможности реализовать функциональность изменения таблицы без DROP/CREATE на практике!

Для этого вам придется узнать практическую модель физического хранения всех объектов.
Потому что придется физически двигать байты на диске
Причем так двигать, чтобы они у зависимых объектов не осталось неправильных или несуществующих ссылок на перемещенные байты
26 май 09, 16:10    [7229777]     Ответить | Цитировать Сообщить модератору
 Re: Изменение свойств столбцов таблиц в MS SQL SERVER 2008  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory, теперь я понял! Огромное Вам спасибо!
26 май 09, 16:21    [7229893]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить