Muốn thêm kinh nghiệm của tôi với chuyển đổi. Tôi đã có nhiều text
lĩnh vực trong mã Linq2Query cổ đại. Điều này là để cho phép text
các cột có trong chỉ mục được xây dựng lại TRỰC TUYẾN .
Trước tiên tôi đã biết về lợi ích trong nhiều năm, nhưng luôn cho rằng việc chuyển đổi có nghĩa là một số truy vấn dài đáng sợ trong đó SQL Server sẽ phải xây dựng lại bảng và sao chép mọi thứ, đưa trang web của tôi xuống và nâng cao tâm trạng của tôi.
Tôi cũng lo ngại rằng Linq2Query có thể gây ra lỗi nếu nó đang thực hiện một số loại xác minh loại cột.
Mặc dù vậy, rất vui khi báo cáo rằng các lệnh ALTER trả về NGAY LẬP TỨC - vì vậy chúng chắc chắn chỉ thay đổi siêu dữ liệu bảng. Có thể có một số công việc ngoại tuyến xảy ra để đưa <8000 dữ liệu ký tự trở lại trong bảng, nhưng lệnh ALTER là ngay lập tức.
Tôi đã chạy như sau để tìm tất cả các cột cần chuyển đổi:
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] VARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'TEXT' order by table_name, column_name
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] NVARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'NTEXT' order by table_name, column_name
Điều này đã cho tôi một danh sách các truy vấn đẹp, mà tôi vừa chọn và sao chép vào một cửa sổ mới. Như tôi đã nói - chạy cái này ngay lập tức.
Linq2Query khá cổ xưa - nó sử dụng một nhà thiết kế mà bạn kéo các bảng lên. Tình hình có thể phức tạp hơn đối với Mã EF trước tiên nhưng tôi vẫn chưa giải quyết được.