Thay đổi độ dài của varchar trên bảng prod trực tiếp


25

Tôi có một máy chủ DB MS SQL Server 2008 R2 hiện đang được sử dụng với một ứng dụng sản xuất.

Một cải tiến mới cho ứng dụng hiện yêu cầu một varchar(100)cột trong bảng được tăng chiều dài.

Có thể tăng chiều dài của cột hiện tại trong DB prod mà không ảnh hưởng đến dữ liệu hiện tại không?

Thay đổi này có phải được hoàn thành trong giờ làm việc để tránh gián đoạn dịch vụ không?

Câu trả lời:


42

Nếu bạn đang tăng nó lên varchar(100 - 8000)(tức là bất cứ điều gì khác varchar(max)) và bạn đang thực hiện việc này thông qua TSQL chứ không phải GUI SSMS

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

và không làm thay đổi cột nullability từ NULLđến NOT NULL(mà sẽ khóa bảng trong khi tất cả các hàng được xác nhận và có khả năng ghi vào ) hoặc từ NOT NULLđến NULL trong một số trường hợp thì đây là một siêu dữ liệu nhanh chóng chỉ thay đổi. Có thể cần phải đợi một SCH-Mkhóa trên bàn nhưng một khi nó nhận được rằng sự thay đổi sẽ diễn ra ngay lập tức.

Một lưu ý cần lưu ý là trong thời gian chờ SCH-Mkhóa, các truy vấn khác sẽ bị chặn thay vì nhảy hàng đợi trước nó để bạn có thể muốn xem xét thêm SET LOCK_TIMEOUTlần đầu tiên.

Cũng đảm bảo trong ALTER TABLEcâu lệnh bạn chỉ định rõ ràng NOT NULLnếu đó là trạng thái cột ban đầu vì nếu không thì cột sẽ được thay đổi để cho phép NULL.


Cảm ơn câu trả lời nhanh chóng, chỉ là kiểm tra. Nó gần như ngay lập tức.
anataliocs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.