Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
Всем привет, есть несколько сотен однотипных таблиц, во всех требуется поменять тип поля INT на BIGINT.
Есть возможность лочить эти таблицы на какое то время, размер таблиц разный, от 0 до 200млн записей.

Есть следующие вопросы:
1. Если я поменяю тип через дизайнер, как я понимаю, все данные из таблицы перельются во временную таблицу, потом таблица пересоздается и из временной таблицы данные зальются обратно?
2. Что будет блокировано в случае п1 кроме самой таблицы? При тестах, я наблюдаю, что в момент перестроения таким образом таблицы, из студии нет возможности просматривать список элементов всей базы, например таблицы, хранимки итд.
3. Или есть более удобные средства для этих задач?
11 ноя 20, 15:38    [22230192]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
aleks222
Member

Откуда:
Сообщений: 1086
teCa
Всем привет, есть несколько сотен однотипных таблиц, во всех требуется поменять тип поля INT на BIGINT.
Есть возможность лочить эти таблицы на какое то время, размер таблиц разный, от 0 до 200млн записей.

Есть следующие вопросы:
1. Если я поменяю тип через дизайнер, как я понимаю, все данные из таблицы перельются во временную таблицу, потом таблица пересоздается и из временной таблицы данные зальются обратно?
2. Что будет блокировано в случае п1 кроме самой таблицы? При тестах, я наблюдаю, что в момент перестроения таким образом таблицы, из студии нет возможности просматривать список элементов всей базы, например таблицы, хранимки итд.
3. Или есть более удобные средства для этих задач?


1. Какая тебе разница, если ты по другому не умеешь?
2. Блокировка схемы. Студия ждет.
3. Вангую identity. В прочих случая alter table alter column спасет страдальца.
11 ноя 20, 15:43    [22230198]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

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

1. Какая тебе разница, если ты по другому не умеешь?


Как например?
11 ноя 20, 16:01    [22230216]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

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

2. Что будет блокировано в случае п1 кроме самой таблицы?

до кучи тех таблиц, у которых ФК смотрели на эту таблицу.
ибо кроме перелива данных, сперва скриптуются,
затем дропаются, а потом восстанавливаются все ФК,
которые на таблицу смотрели.
так что сама таблица может быть и из 10 строк каких-то "типов",
а ссылающаяся таблица (если не сотня таблиц) в 300Гб,
и пока она вся будет проверяться, она будет залочена.
что за любовь к GUI?
пишите alter table alter column.

P.S.
если там и правда ФК, все их все равно придется дропать
и менять еще и типы в ссылающихся таблицах.

P.P.S.
а дерьмо с identity лучше сразу на сиквенс переделать
11 ноя 20, 16:27    [22230236]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
Yasha123,

Через гуи я скрипт изменений сгенерировал, а потом посмотрел, что сервер делать планирует. У меня 7800+таблиц, через гуи это просто не реально реализовать.

На интересующую меня таблицу выполнил вот такой запрос:

EXEC sp_fkeys @pktable_name = 'TableName', @pktable_owner = 'dbo'


получаю пустой результат. Значит на эту таблицу нет внешних ссылок.

Я сейчас планирую, как автоматизировать этот процесс.
11 ноя 20, 17:08    [22230281]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
teCa,

Например из всего реестра я сначала выберу таблицы где 0 строк, таких 5887, и по очереди выполню на них:

alter table alter column


Или альтернатива просто удалить таблицу и пересоздать её новой хранимкой?? Мне кажется, что разница небольшая..

Тк внешних ключей на таблицах нет, схема будет блокироваться на короткое время, правильно я понимаю?

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

Самые тяжелые таблицы нужно смотреть отдельно, тк переливать данные в новую таблицу, а их будет сотня точно, все разом не перелить - упрусь в место на диске, по очереди - может долго получиться.
11 ноя 20, 17:21    [22230288]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34241
Блог
Yasha123
а дерьмо с identity лучше сразу на сиквенс переделать


обоснование?
11 ноя 20, 17:27    [22230294]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
teCa,

составьте себе уже запросы через метаданные

declare @masterTable sysname = 'tbl_MASTER';
declare @newMasterTable sysname = '[dbo].[tbl_MASTER2]';
declare @sql1 nvarchar(max) = N'';
declare @sql2 nvarchar(max) = N'';

select @sql1 += formatmessage('alter table %s drop constraint %s;', quotename(object_schema_name([parent_object_id])) + N'.' + quotename(object_name([parent_object_id])), quotename([name])) + nchar(13) + nchar(10)
from sys.foreign_keys
where [referenced_object_id] = object_id(@masterTable, 'U');




select @sql2 += formatmessage('alter table %s add constraint %s foreign key (%s) references %s (%s)', 
                              quotename(object_schema_name([parent_object_id])) + N'.' + quotename(object_name([parent_object_id])),
                              quotename(quotename(object_name([constraint_object_id]))),
                              col_name([parent_object_id], [parent_column_id]),
                              @newMasterTable,
                              quotename(col_name([referenced_object_id], [referenced_column_id]))) + nchar(13) + nchar(10)
from sys.foreign_key_columns
where [referenced_object_id] = object_id(@masterTable, 'U')

select @sql1;
select @sql2;

--exec(@sql1);
--exec(@sql2);


запрос нужно модифицировать если внешний ключ составной (состоящий из более чем одной колонки)
11 ноя 20, 17:33    [22230301]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
felix_ff,

Пустой результат:

EXEC sp_fkeys @pktable_name = 'TableName', @pktable_owner = 'dbo'


разве не означает, что

alter table %s drop constraint %s;


для данных таблиц не потребуется?
11 ноя 20, 17:41    [22230305]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
teCa
teCa,

Например из всего реестра я сначала выберу таблицы где 0 строк, таких 5887, и по очереди выполню на них:

alter table alter column


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


Вы не понимаете что такое блокировка схемы, это не сущность "схема" в которой живет таблица.
это будет навешен тип блокировки Sch-M (Schema Modification) на объекты которая затрагивает инструкция. в данном случае это будут обе таблицы (и мастер и дочерняя).

и вот с ними никакие другие сессии ничего выполнить не смогут, ни на каком уровне изоляции (ни ALTER ни тем более SELECT/INSERT/UPDATE/DELETE).

а таблицы в схеме в которой живут эти ваши таблицы вы сможете создавать в любой момент.
11 ноя 20, 17:41    [22230306]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
teCa
felix_ff,

Пустой результат:

EXEC sp_fkeys @pktable_name = 'TableName', @pktable_owner = 'dbo'


разве не означает, что

alter table %s drop constraint %s;


для данных таблиц не потребуется?


ну так посмотрите что вернет мой запрос, там где внешних ключей на таблице нет, он и не сформирует строки запроса.
11 ноя 20, 17:43    [22230307]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
felix_ff
teCa
teCa,

Например из всего реестра я сначала выберу таблицы где 0 строк, таких 5887, и по очереди выполню на них:

alter table alter column


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


Вы не понимаете что такое блокировка схемы, это не сущность "схема" в которой живет таблица.
это будет навешен тип блокировки Sch-M (Schema Modification) на объекты которая затрагивает инструкция. в данном случае это будут обе таблицы (и мастер и дочерняя).

и вот с ними никакие другие сессии ничего выполнить не смогут, ни на каком уровне изоляции (ни ALTER ни тем более SELECT/INSERT/UPDATE/DELETE).

а таблицы в схеме в которой живут эти ваши таблицы вы сможете создавать в любой момент.


Спасибо за подробное разъяснение! Меня сбила с толку блокировка студии на объекте в базе, то, что данные были доступны я видел. Это упрощает задачу.
11 ноя 20, 17:45    [22230309]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
felix_ff
teCa
felix_ff,

Пустой результат:

EXEC sp_fkeys @pktable_name = 'TableName', @pktable_owner = 'dbo'


разве не означает, что

alter table %s drop constraint %s;


для данных таблиц не потребуется?


ну так посмотрите что вернет мой запрос, там где внешних ключей на таблице нет, он и не сформирует строки запроса.


Да, пустой результат. Спасибо за скрипт!
11 ноя 20, 17:48    [22230314]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
Критик
Yasha123
а дерьмо с identity лучше сразу на сиквенс переделать


обоснование?

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

+ еще этот дерьмантин любят вставлять с IDENTITY_INSERT.
и это сразу вываливает юзера из обычного db_datawriter
и требует ALTER на таблицу.
а когда такие таблицы еще и "намечены в будущем", так и на всю схему.
что весьма жирно
11 ноя 20, 17:50    [22230316]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
invm
Member

Откуда: Москва
Сообщений: 9489
teCa,

1. На основе метаданных получить перечень таких столбцов, исключив вычисляемые.
2. На основе перечня из п.1 сгенерировать скрипты создания для ключей, индексов, ограничений, вычисляемых столбцов, schema-bound объектов, индексированных представлений, куда эти столбцы входят.
3. Удалить все сущности из п.2
4. Для всех столбцов из п.1 сгенерировать и выполнить инструкцию alter table ... alter column ...
5. Пересоздать удаленные сущности скриптами из п.2
6. Для обычных представлений, куда входят столбцы и п.1 выполнить sp_refreshview
11 ноя 20, 18:05    [22230331]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
invm
Member

Откуда: Москва
Сообщений: 9489
Yasha123
вот чтобы в след. раз возможно было менять такую колонку.
Тип identity-столбца можно менять.
11 ноя 20, 18:08    [22230334]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
invm
teCa,

1. На основе метаданных получить перечень таких столбцов, исключив вычисляемые.
2. На основе перечня из п.1 сгенерировать скрипты создания для ключей, индексов, ограничений, вычисляемых столбцов, schema-bound объектов, индексированных представлений, куда эти столбцы входят.


Если я в студии сгенерирую запрос на изменение, все перечисленные в п2 объекты, должны в этом скрипте быть?
11 ноя 20, 18:34    [22230351]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
teCa,

Странно, но сервер предлагает в этом случае удалить таблицу и пересоздать новую. Может действительно выгоднее использовать такую конструкцию?
12 ноя 20, 16:26    [22230889]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1273
teCa
Всем привет, есть несколько сотен однотипных таблиц, во всех требуется поменять тип поля INT на BIGINT.
Есть возможность лочить эти таблицы на какое то время, размер таблиц разный, от 0 до 200млн записей.

Есть следующие вопросы:
1. Если я поменяю тип через дизайнер, как я понимаю, все данные из таблицы перельются во временную таблицу, потом таблица пересоздается и из временной таблицы данные зальются обратно?
2. Что будет блокировано в случае п1 кроме самой таблицы? При тестах, я наблюдаю, что в момент перестроения таким образом таблицы, из студии нет возможности просматривать список элементов всей базы, например таблицы, хранимки итд.
3. Или есть более удобные средства для этих задач?


у меня 2 года назад была обратная задача в MySQL
я менял bigint в int (там цель была уменьшить БД) - и где то 1/3 БД подрезал
единственный полезный момент к-й я помню - я вначале сгенерил скрипт
alter table для кждого столбца ( метаданные прочитал - и сделал )
а в некоторых таблицах было по 8-9 полей -
после ревью чел заметил - что я меняю одну таблицу 8 раз - ну я подфиксил скрпит
с одним Alter для одной таблицы - и время апдейта сократилось в 3 раза

PS таки вещи конечно делаются в окна (обычно ночью)

варианты с дропами и ре-креатами индексов (кроме PK ) понятны
тут проще посмотреть на самых больших таблицах - будет ли выигрыш
(думаю в зависимости от кол-ва индексов)
12 ноя 20, 16:29    [22230895]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3795
Yasha123
teCa

2. Что будет блокировано в случае п1 кроме самой таблицы?

до кучи тех таблиц, у которых ФК смотрели на эту таблицу.
ибо кроме перелива данных, сперва скриптуются,
затем дропаются, а потом восстанавливаются все ФК,
которые на таблицу смотрели.
так что сама таблица может быть и из 10 строк каких-то "типов",
а ссылающаяся таблица (если не сотня таблиц) в 300Гб,
и пока она вся будет проверяться, она будет залочена.
что за любовь к GUI?
пишите alter table alter column.

P.S.
если там и правда ФК, все их все равно придется дропать
и менять еще и типы в ссылающихся таблицах.

P.P.S.
а дерьмо с identity лучше сразу на сиквенс переделать


Веселуха "несколько сотен однотипных таблиц"+"размер таблиц разный, от 0 до 200млн записей."
12 ноя 20, 16:31    [22230896]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
Гулин Федор

единственный полезный момент к-й я помню - я вначале сгенерил скрипт
alter table для кждого столбца ( метаданные прочитал - и сделал )
а в некоторых таблицах было по 8-9 полей -
после ревью чел заметил - что я меняю одну таблицу 8 раз - ну я подфиксил скрпит
с одним Alter для одной таблицы - и время апдейта сократилось в 3 раза

не знаю, что там в MySQL, но у ТС SQL Server,
и одним альтером 8 полей он не поменяет.
8 полей, 8 альтеров,
и дай ему бог поменять вообще хоть как и не развалить все, с его-то отношением к ФК.
которые могут быть каскадными
12 ноя 20, 16:41    [22230909]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
Ролг Хупин

Веселуха "несколько сотен однотипных таблиц"

напоминает творчество моего начальника,
у которого все справочники однотипные:
id bigint identity + колонка с расшифровкой.

при параллельной разработке на девелоперском сервере возникает новый тип,
ему генерится новый id, допустим 100.
в это время на проде тоже возникает новый тип, но другой, зато ему тоже генерится новый id = 100.
а потом они пытаются с дева на прод перенести, и этот id уже занят.
текучка кадров постоянная, и каждому приходилось заново объяснять, что identity не апдэйтится.
всех прямым ходом к начальнику, чтобы сами колбасились со своей "синхронизацией identity"
под его объяснения, зачем всем так нужен identity в справочниках
---
теперь начальник сдался и у нас больше нет ни одного справочника с identity.
---
кроме гадостей в адрес identity не могу сказать ничего
12 ноя 20, 16:58    [22230939]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34241
Блог
Yasha123
Критик
пропущено...
обоснование?

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


имхо конечно, но ерунда ваше обоснование, изменение такого столбца - дело довольно редкое, в 99% решается просто из SSMS, в 1% скриптами, если таблица большая )

а сиквенс нужен там, где есть 2-5-10 сущностей, которые нужно заполнять в рамках одного идентификатора, лепить их везде просто чтобы было - это так себе решение
13 ноя 20, 09:01    [22231227]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
Критик

имхо конечно, но ерунда ваше обоснование

обоснования всей гадкости identity у меня выше даны.
при смене типа в здоровой таблице, которую нельзя было блокировать,
ибо все в нее пишут, другого выхода просто не было.
переливать пришлось в такую же, но с нужным типом и без идентити.
переливаться в такой же кластерный с идентити без сорта сервер противился,
а зато в таблицу с сиквенсом без сорта перелилось,
сиквенс пустили с началом на 1000000 больше, чем был макс. ид переливаемой таблицы.
в старую спокойно писали во время перелива,
потом ренэйм и вот все уже пишут в таблицу с сиквенсом,
а я спокойно доливаю то, что навставляли во время перелива.
а теперь расскажите, как без блокировки основной таблицы с идентити в 100Гб
можно было переделать тип столбца с идентити.
13 ноя 20, 12:48    [22231363]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
Критик

а сиквенс нужен там, где есть 2-5-10 сущностей, которые нужно заполнять в рамках одного идентификатора, лепить их везде просто чтобы было - это так себе решение

совсем даже не обязательно несколько сущностей иметь.
у меня, например, логирование процедур построено на паре, идентити + сиквенс.
процедура в самом начале отцепляет себе execution_id,
это определяет данный вызов процедуры.
с этим execution_id заполняются строки лога после каждой выполненной инструкции.
а так на таблице есть ид идентити, особо никого не интересующий, но подходит для ПК.

К сообщению приложен файл. Размер - 84Kb
13 ноя 20, 13:10    [22231373]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
Yasha123
Критик

имхо конечно, но ерунда ваше обоснование

обоснования всей гадкости identity у меня выше даны.
при смене типа в здоровой таблице, которую нельзя было блокировать,
ибо все в нее пишут, другого выхода просто не было.
переливать пришлось в такую же, но с нужным типом и без идентити.
переливаться в такой же кластерный с идентити без сорта сервер противился,
а зато в таблицу с сиквенсом без сорта перелилось,
сиквенс пустили с началом на 1000000 больше, чем был макс. ид переливаемой таблицы.
в старую спокойно писали во время перелива,
потом ренэйм и вот все уже пишут в таблицу с сиквенсом,
а я спокойно доливаю то, что навставляли во время перелива.
а теперь расскажите, как без блокировки основной таблицы с идентити в 100Гб
можно было переделать тип столбца с идентити.


Недавно как раз переливал такую таблицу (1.8млрд записей):
1. Создал новую таблицу с нужным типом
2. Создал ограничения, индексы, триггеры на новой таблице.
3. Создал еще одну копию этой таблицы _update и повесил триггер на боевую, который писал в таблицу _update все UPDATE.
4. Создал скрипт, который пачками по 1000 штук переносил записи из боевой в копию с новым типом. Перед вставкой использовал
SET IDENTITY_INSERT _bigint ON;  

после вставки OFF
5. 2,5 суток переливался весь объем.
6. MERGE с таблицей _update
7. Сверил обе таблицы на NOT EXISTS
8. sp_rename
9. Пересоздал внешние ключи на связанных таблицах
13 ноя 20, 15:19    [22231465]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
о боже, зачем же все индексы и триггеры вешать на таблицу-приемник?
триггеры уже свое отработали, когда принимали эти данные в старой таблице...

SET IDENTITY_INSERT ON гарантирует сорт при вставке в новую таблицу,
если даже делать упорядоченный селект из старой.
лично мне ни время, ни место не позволяли 100Гб сортировать.
а нет идентити в новой, нет и сорта, перелилось все минут за 15,
и уже кластерный на месте, по этому самому бигинту.

кто ратует за идентити, просто не переливал с ним ничего объемного.

вот он у меня на таблице лога, это да, мне на него все равно.
ни переливать, ни апдэйтить его никто не будет.
а где на большой нужной таблице и ФК на него завязаны,
т.е. любой перелив должен эти значения сохранять, там идентити зло.
но никого никуда не призываю, пока вам idenity не выстрелит, не сможет по достоинству его оценить
13 ноя 20, 16:36    [22231544]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
teCa
Member

Откуда:
Сообщений: 684
Yasha123
о боже, зачем же все индексы и триггеры вешать на таблицу-приемник?
триггеры уже свое отработали, когда принимали эти данные в старой таблице...


Триггеры разумеется были включены только после переключения.
13 ноя 20, 17:05    [22231568]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
ок, но индексы надо потом навешивать.
можно сделать сразу только кластерный,
а переливать с тем же order by, что и в кластерном-исходном.
и тогда, если нет идентити в приемнике, перельется без сорта
13 ноя 20, 17:44    [22231608]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34241
Блог
Yasha123
ок, но индексы надо потом навешивать.
можно сделать сразу только кластерный


с чего бы?
таблица на несколько миллиардов записей, ее нужно перелить в другую, по времени вы особо не ограничены,
индексы вы решили повесить потом,
и, внезапно, в работающем коде оказались DDL операции )
13 ноя 20, 17:59    [22231620]     Ответить | Цитировать Сообщить модератору
 Re: Смена типа int на bigint в большом количестве однотипных таблиц?  [new]
Yasha123
Member

Откуда:
Сообщений: 1929
это у кого это DDL-операции,
когда приложение только db_datareader + db_datawriter?
истребив идентити, истребляется и set identity_insert,
и сразу отпадает надобность в alter table.
так что это у вас в коде DDL,
а я могу спать спокойно
13 ноя 20, 18:13    [22231625]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить