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

Откуда:
Сообщений: 118
Microsoft SQL Server 2016 (SP1-GDR) Web Edition, установлен на Azure VM DS12_v2 (4 ядра 28 GB ОЗУ).
Есть таблица 32 GB 20 млн строк.
Запустил запрос на добавление поля в эту таблицу:
ALTER TABLE [dbo].[Actions] 
ADD [IsAutomated] [bit] NOT NULL 
CONSTRAINT [DF_Actions_IsAutomated] DEFAULT ((0)) -- 28:47
Запрос занял 28 минут. Не было блокировок, с БД в этом момент не работали. Во время работы запроса замечен гиганский i/o, похоже что все 32 GB были прочитаны, а потом записаны.
Проверил этот запрос на нескольких других инстансах, pro или enterprise edition, везде происходит мгновенно.
похоже, причина в версии (web edition), есть какое-то ограничение, но что конкретно?
или может быть VM Azure как-то влияет?
спасибо.
5 июн 17, 18:49    [20541260]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
aleks2
Guest
Врешь.
0 дефолта писать надо в любом случае.
5 июн 17, 18:59    [20541269]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
aleks2
Врешь.
0 дефолта писать надо в любом случае.
Если бы кто-то учил матчасть, то знал бы, что c 2012го сервера не в любом.
5 июн 17, 19:16    [20541313]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
valv
Member

Откуда:
Сообщений: 118
действительно, ограничение web-edition.
https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2016
по-видимому, возможность онлайн добавления поля это часть "Online schema change" в группе "RDBMS High Availability":
только для enterprise и developer edition.

дополнительный вопрос:
возможно ли тестировать на enterprise edition сервере изменения для web-edition?

конечно нет возможности типа "set compatibility_level", чтобы одним "alter database" поменять edition.
а можно ли поменять настройки enterprise edition сервер так, чтобы в этих настойках он работал как web-edition?
6 июн 17, 11:30    [20542648]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
o-o
Guest
скачайте себе экспресс и на нем тестируйте.
и бесплатно, и примерно что и веб.
т.е. если нужно выбрать редакцию, наиболее близкую к вебу,
то скорее экспресс, чем энтерпраиз
6 июн 17, 11:47    [20542738]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
localDB может быть? Ещё проще и устанавливается автоматически со студией.
6 июн 17, 12:15    [20542842]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
valv
Member

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

к сожалению, ограничение express edition "Maximum relational database size"=10 GB не даёт возможности для полноценных тестов.
6 июн 17, 12:31    [20542921]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Гавриленко Сергей Алексеевич
aleks2
Врешь.
0 дефолта писать надо в любом случае.
Если бы кто-то учил матчасть, то знал бы, что c 2012го сервера не в любом.


Если речь об ALTER TABLE...ALTER COLUMN WITH (ONLINE = ON), то это с 2016.

Мне интересно, как изменилось хранение и отображение default значений для 2012+? Не нашел в справке. Или плохо искал?
6 июн 17, 12:55    [20543029]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Нашел такую статью Алексея Князева:

http://www.t-sql.ru/post/online_default.aspx
6 июн 17, 13:03    [20543070]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Владислав Колосов
Нашел такую статью Алексея Князева:

http://www.t-sql.ru/post/online_default.aspx
Речь как раз про это.
6 июн 17, 13:08    [20543082]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
o-o
Guest
valv
к сожалению, ограничение express edition "Maximum relational database size"=10 GB не даёт возможности для полноценных тестов.

дает-дает.
файлы надо подкладывать уже после создания базы.
ну т.е. создаете базу на экспрессе с нужными файлами и минимальным размером.
базу в оффлайн, файлы подменяете на те, что с веба.
базу обратно в онлайн, и вот у вас приаттачена база в терабайт.
просто больше подрасти она не сможет, ну так с запасом подкладывайте.
у вас данных терабайт, а файлы базы, пока они на платной редакции, сделайте 2Тб.
ресторить не даст, а подменять файлы сколько угодно
6 июн 17, 13:12    [20543099]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
valv
Member

Откуда:
Сообщений: 118
o-o
valv
к сожалению, ограничение express edition "Maximum relational database size"=10 GB не даёт возможности для полноценных тестов.

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

спасибо.

просто потрясающе.
а из майкрософта мужики то и не знают...
6 июн 17, 13:30    [20543198]     Ответить | Цитировать Сообщить модератору
 Re: добавление поля в таблицу  [new]
o-o
Guest
valv,
ну что-то не прикрывают дыру-то.
да и как бы им и в голову не придет,
что для тестирования не бесплатный девелопер, а какой-то экспресс возьмут.
и непременно терабайты там постараются развернуть
----
схема рабочая только для тестов: нормальным людям необходим бэкап и рестор.
а вот отресторить-то и не даст, про ограничение напомнит
6 июн 17, 14:12    [20543375]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить