Xuất tất cả dữ liệu (bao gồm thông tin đăng nhập, máy chủ được liên kết, công việc Tác nhân SQL, cài đặt Thư DB, v.v.) và xây dựng lại dữ liệu cấp cá thể, cộng với tải lại tất cả dữ liệu người dùng, rất nhiều công việc. Và, ngay cả sau khi tất cả điều đó, bạn vẫn có gì bảo đảm rằng bạn có thể cập nhật collation mặc định của một cơ sở dữ liệu thông qua ALTER DATABASE
bởi vì có một số điều kiện mà sẽ ngăn chặn các hoạt động từ hoàn thành (xin vui lòng xem "Thay đổi cơ sở dữ liệu Collation" của ALTER DATABASE
tài liệu để biết chi tiết) .
Tuy nhiên, có một phương pháp không có giấy tờ dễ dàng hơn nhiều . Hạn chế chính là nó không được hỗ trợ. Điều này không có nghĩa là mọi thứ sẽ sai, chỉ là nếu có gì đó, Microsoft sẽ không giúp sửa nó (vì họ không bao giờ đảm bảo rằng nó sẽ hoạt động).
Phương pháp tôi nói đến là chạy sqlservr.exe
với công -q {new_collation_name}
tắc. Có nhiều hơn một chút so với điều đó, nhưng đó là ý tưởng cơ bản. Phương pháp này chỉ đơn giản là cập nhật siêu dữ liệu hệ thống, có lợi ích và hậu quả, những vấn đề chính là:
LỢI ÍCH
- khá nhanh
- bỏ qua hầu hết các hạn chế ngăn cản
ALTER DATABASE
làm việc
- có khả năng chính xác hơn nhiều so với bất kỳ tập lệnh nào mà mọi người nghĩ ra trong nhiều năm qua để thả và tái tạo các đối tượng
VÒI
- không được hỗ trợ nếu có sự cố
VARCHAR
dữ liệu có thể thay đổi, NẾU trang mã khác nhau giữa các bộ sưu tập cũ và mới và các ký tự có giá trị 128 - 255 (0x80 - 0xFF) tồn tại và các ký tự đó không tồn tại dưới cùng một ký tự có cùng giá trị trên mã mới trang. Vì vậy, tiềm năng là mất dữ liệu và dữ liệu của bạn cần được nghiên cứu trước để đảm bảo rằng điều kiện này không tồn tại. Nhưng, điều này cũng có nghĩa là có rất nhiều trường hợp chỉ có các ký tự có giá trị 0 - 127 không gây nguy hiểm, ngay cả khi trang mã thay đổi.
- Các loại bảng do người dùng xác định (UDTT) được bỏ qua và cần được cập nhật thủ công.
Để biết mô tả chi tiết về những gì sqlservr.exe -q
phương pháp làm và không làm (bao gồm chi tiết về cách thức hoạt động của các bộ sưu tập ở các cấp độ khác nhau và các vấn đề tiềm ẩn cần chú ý), vui lòng xem bài đăng của tôi:
Thay đổi đối chiếu của trường hợp, cơ sở dữ liệu và tất cả các cột trong tất cả các cơ sở dữ liệu người dùng: Điều gì có thể xảy ra sai?
Để thay đổi chỉ dụ (bao gồm cả cơ sở dữ liệu hệ thống: master
, model
, msdb
, và tempdb
) và một hoặc nhiều cơ sở dữ liệu (nhưng không phải tất cả các cơ sở dữ liệu), chỉ cần tách cơ sở dữ liệu (s) mà bạn muốn loại trừ từ hoạt động này, và sau đó lại đính kèm chúng khi cập nhật đối chiếu hoàn tất.