Зміна довжини варшара на прямій програмі таблиці


25

У мене зараз використовується сервер БД MS SQL Server 2008 R2, який використовується з виробничим додатком.

Нове вдосконалення додатка вимагає varchar(100)збільшити довжину стовпця в таблиці.

Чи можна збільшити довжину цього наявного стовпця в БД prod, не впливаючи на поточні дані?

Чи потрібно проводити цю зміну в неробочий час, щоб уникнути порушень обслуговування?

Відповіді:


42

Якщо ви збільшуєте його до varchar(100 - 8000)(тобто нічого іншого varchar(max)), і ви робите це через TSQL, а не інтерфейс інтерфейсу SSMS

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

і не змінюючи нульовість стовпця з NULLна NOT NULL(що б заблокувало таблицю, коли всі рядки перевірені і потенційно записані в ) або з NOT NULLв NULL за певних обставин, тоді це швидка зміна метаданих. Можливо, доведеться зачекати SCH-Mзамок на столі, але як тільки він зрозуміє, що зміна буде майже миттєвою.

Одне застереження, про яке слід пам’ятати, - це те, що під час очікування SCH-Mблокування інші запити будуть заблоковані, а не стрибки черги попереду, щоб ви могли розглянути можливість додавання SET LOCK_TIMEOUTпершого.

Також переконайтеся, що у ALTER TABLEзаяві ви чітко вказуєте, NOT NULLчи це початковий стан стовпця, оскільки в іншому випадку стовпець буде змінено на дозвіл NULL.


Дякую за швидку відповідь, просто перевіряв. Це було майже миттєво.
anataliocs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.