powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Простой вопрос по SQL2000
9 сообщений из 9, страница 1 из 1
Простой вопрос по SQL2000
    #32050073
Фотография KIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какими различными способами можно удалить с колонки в таблице свойство IDENTITY ?
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050137
Фотография KIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо вопрос чересчур сложен, либо все ушли в курилку :)
На всякий случай упрощу вопрос:

Какова может быть рекомендуемая наиболее корректная последовательность операций над таблицей без использования ЕМ,
позволяющая макимально безопасно и дальновидно удалить свойство IDENTITY с одной из колонок в этой таблице?
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050142
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты посмотри, какой скрипт ЕМ генерит при попытке снять идентити. Полное пересоздание таблицы. Если бы было можно проще, я думаю ЕМ не стал бы этого делать.
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050165
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если делать через EM, то в профайлере видно, что создается другая таблица с измененной структурой, туда заливаются все данные из старой таблицы (естественно, с эксклюзивным локом), старая таблица убивается, а полученная переименовывается в старую. Это если не считать миллион предварительных проверок на существование ключей, триггера и пр., переброску всех этих элементов на новую таблицу.

Не думаю, что для общего случая такой задачи можно придумать лучший механизм.

Как классно: дальновидно удалить свойство IDENTITY
гы :-)
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050185
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно чуть-чуть упростить
- добавляем новый стобец
- копируем в него содержимое identity
- удаляем столбец identity
- переименовываем новый столбец
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050193
Фотография KIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.
Да, я видел, что ЕМ пересоздает таблицу
Это не очень хорошо.
А плохо то, что изменяется object_id этой таблицы.

Ну, нельзя без пересоздания, так нельзя - будем думать.

2GreenSunrise

Да, с дальновидностью :) тут какламбурчик получился.
Но, я то, втайне надеялся на какую-нибудь недокументированную возможность SQL2000 и грозящие последствия ее использования.
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050204
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory, ваш вариант мне пришел в голову еще до запуска профайлера, но не понравился именно в общем случае - когда навешаны ключи, триггера, констрэйнты... Тогда вся эта простенькая процедура усложняется. Нужно анализировать, какие из этих объектов относятся к нашему столбцу и т.д. Проще вытащить все связанное с этой таблицей и грохнуть все. Ну а далее по тексту.
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050206
Фотография KIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory

Спасибо. Это выход.
Все гениальное просто.
:)
...
Рейтинг: 0 / 0
Простой вопрос по SQL2000
    #32050222
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GreenSunrise
Ну так я же и сказал "чуть-чуть" :-) . Просто копирование всей таблицы по методу EM это дополнительное место на диске (плюс к месту, занимаемому транзакцией). А в остальном все как у EM - анализ все зависимых от удаляемого столбца объектов, их удаление и т.д.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Простой вопрос по SQL2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]