Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách thay đổi đối chiếu cấp máy chủ khi chạy phiên bản máy chủ SQL

Trong bài viết trước, tôi đã giải thích những điều cơ bản về SQL Server Collation. Tôi khuyên bạn nên đọc bài viết đó trước (nếu bạn chưa đọc). Ở đây, tôi sẽ chỉ cho bạn cách thay đổi đối chiếu cấp máy chủ hoặc đối chiếu cấp phiên bản SQL Server của một phiên bản SQL Server hiện có.

Đối chiếu mức máy chủ trong SQL Server là gì?

Đối chiếu xác định các quy tắc sắp xếp, thuộc tính chữ hoa và dấu cho dữ liệu. Đây là một cài đặt quan trọng có thể ảnh hưởng đến dữ liệu của bạn bên trong cơ sở dữ liệu, vì vậy bạn không nên thay đổi thường xuyên.

Đối chiếu có thể được định cấu hình ở 4 lớp trong SQL Server:

  • Cấp máy chủ
  • Cấp độ cơ sở dữ liệu
  • Mức cột
  • Mức độ biểu đạt

Lưu ý: Nếu bạn đang sử dụng phiên bản SQL Server express, bạn không thể thay đổi đối chiếu từ SQL_Latin1_General_CP1_CI_AS .

Thay đổi đối chiếu cấp máy chủ của phiên bản máy chủ SQL hiện có

Phần này sẽ mô tả các điều kiện tiên quyết và quy trình để thay đổi đối chiếu cấp máy chủ. Nó sẽ được thay đổi bằng cách xây dựng lại cơ sở dữ liệu hệ thống với tên đối chiếu mới.

Điều kiện tiên quyết

Thực hiện theo các điểm dưới đây để thực hiện thay đổi đối chiếu cho một phiên bản sản xuất.

  1. Chạy một bản sao lưu đầy đủ của tất cả các cơ sở dữ liệu. Nếu có thể, hãy chụp nhanh máy ảo trước khi bắt đầu quy trình này.
  2. Đảm bảo rằng bạn có tất cả các tập lệnh để tạo cơ sở dữ liệu người dùng hoặc các đối tượng cơ sở dữ liệu như bảng, thông tin đăng nhập, người dùng, công việc, v.v. Chúng tôi sẽ tạo tất cả các đối tượng cơ sở dữ liệu sau khi đối chiếu thay đổi.
  3. Xuất tất cả dữ liệu bằng bcp hoặc bất kỳ công cụ nào của bên thứ ba.
  4. Ghi lại các giá trị cấu hình cấp máy chủ và số bản dựng của phiên bản SQL Server bao gồm các bản sửa lỗi được áp dụng cho phiên bản.
  5. Ghi lại tất cả các vị trí tệp cơ sở dữ liệu hệ thống. Điều này có thể cần thiết nếu bạn đã di chuyển các tệp cơ sở dữ liệu hệ thống của mình sang một vị trí khác.

Hãy cùng xem một vài tập lệnh sẽ giúp bạn nắm bắt chi tiết hệ thống. Sao chép các kết quả đầu ra này vào notepad hoặc tệp Excel hoặc chỉ cần chụp ảnh màn hình và lưu nó để tham khảo trong tương lai.

Chạy lệnh dưới đây để nhận tất cả các cấu hình cấp máy chủ.

--Get all server level configurations
SELECT * FROM sys.configurations;

Nắm bắt phiên bản xây dựng SQL Server bằng cách thực hiện truy vấn dưới đây.

--Fetch SQL Server build version
SELECT @@VERSION
GO

SELECT  
SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
SERVERPROPERTY('ProductLevel') AS ProductLevel,  
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  

Tương tự, chúng ta sẽ lấy vị trí tệp cơ sở dữ liệu hệ thống bằng cách chạy các câu lệnh T-SQL bên dưới.

SELECT name, physical_name AS Database_file_location  
FROM sys.master_files  
WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));

Tiếp theo, chúng tôi sẽ chạy các tập lệnh T-SQL dưới đây để thu thập thông tin đối chiếu của phiên bản SQL Server và tất cả các cơ sở dữ liệu trong một lần.

--Get existing collation of SQL Server Instance and all databases
SELECT name, collation_name  
FROM sys.databases  
GO  
--Get existing server level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]

Đọc bài viết trước của tôi để biết thêm thông tin về tập lệnh này.

Bây giờ, tạo Tạo tập lệnh cho tất cả thông tin đăng nhập và công việc được tạo trên phiên bản SQL Server để tham khảo và xác nhận trong tương lai. Ngoài ra, bạn có thể chạy tập lệnh bên dưới để tìm nạp danh sách tất cả thông tin đăng nhập và công việc từ phiên bản SQL Server.

--Get list of logins
Use master
Go
Select * from syslogins

--Get list of Jobs
USE msdb
Go
Select * from sysjobs

Tạo lại phiên bản

Khi bạn đã hoàn thành các bước được đề cập trong phần điều kiện tiên quyết, bước tiếp theo là bắt đầu quá trình thay đổi đối chiếu. Vì chúng tôi đã sao lưu hoặc xuất tất cả dữ liệu từ cơ sở dữ liệu người dùng, chúng tôi cần tách tất cả cơ sở dữ liệu người dùng khỏi phiên bản SQL Server. Bạn cũng có thể bỏ chúng nếu bạn muốn nhập dữ liệu đã xuất vào cơ sở dữ liệu mới. Tôi khuyên bạn nên tách chúng ra để giữ một bản sao an toàn của cơ sở dữ liệu của bạn để bạn có thể đính kèm chúng sau khi thay đổi đối chiếu.

Quá trình thay đổi đối chiếu cấp máy chủ yêu cầu xây dựng lại cơ sở dữ liệu hệ thống. Chúng ta cần chuyển một tên đối chiếu mới trong khi xây dựng lại cơ sở dữ liệu hệ thống. Hoạt động xây dựng lại cơ sở dữ liệu hệ thống yêu cầu thiết lập cài đặt SQL Server. Hãy bắt đầu hoạt động xây dựng lại cơ sở dữ liệu hệ thống để thay đổi đối chiếu cấp máy chủ.

Đăng nhập vào hệ thống mục tiêu của bạn mà bạn sẽ thay đổi đối chiếu. Mở Lời nhắc lệnh của Windows hoặc cửa sổ dòng lệnh PowerShell. Mở PowerShell, sau đó nhập cmd để sử dụng tiện ích Command Prompt của Windows như được hiển thị trong hình dưới đây. Thay đổi vị trí thư mục của bạn nơi bạn đã đặt các tệp thiết lập cài đặt SQL Server của mình.

--Open Windows Command prompt
Cmd

--Change directory where you have placed SQL Server setup files
Cd <Full path>

--My location was C:\Manvendra\SQL2019\Developer_ENU so i executed below cmd
cd C:\Manvendra\SQL2019\Developer_ENU

Bây giờ tôi đang ở vị trí lưu các tệp cài đặt SQL Server.

Tiếp theo, chúng ta sẽ chạy lệnh dưới đây để xây dựng lại tất cả cơ sở dữ liệu hệ thống. Ngoài ra, chúng ta phải chạy lệnh dưới đây với một tham số đối chiếu mới để thay đổi nó cho phiên bản SQL Server này và tất cả cơ sở dữ liệu hệ thống.

--Rebuild system databases with new collation. Replace all values in <> with your desired value.
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=<InstanceName>
/SQLSYSADMINACCOUNTS=<accounts> / SAPWD= <StrongPassword>
/SQLCOLLATION=<CollationName>

--I replaced all values and executed the below command with collation SQL_Latin1_General_CP1_CS_AS
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=WIN-AFNHJ3L1D6E\Administrator /[email protected] /SQLCOLLATION=SQL_Latin1_General_CP1_CS_AS

Bạn có thể thấy đầu ra của nó trong ảnh chụp màn hình bên dưới. Bạn nên để nguyên màn hình và để màn hình tiếp tục cho đến khi bạn nhận được thư mục làm việc.

Ở đây, chúng tôi đã nhận được lời nhắc. Nó có nghĩa là cơ sở dữ liệu hệ thống đã được xây dựng lại với một đối chiếu mới cho phiên bản SQL Server này. Hãy xác minh nó.

Đảm bảo rằng SQL Server đang chạy và các dịch vụ của nó được khởi chạy. Bây giờ hãy khởi động SQL Server Management Studio hoặc sqlcmd để kết nối với phiên bản SQL Server. Bạn có thể thấy, tôi đã kết nối thành công với phiên bản SQL Server được xây dựng lại ở các bước trên. Chúng ta chỉ có thể thấy cơ sở dữ liệu hệ thống trong hình ảnh dưới đây.

Chạy các câu lệnh T-SQL dưới đây để thu thập chi tiết đối chiếu cấp cơ sở dữ liệu và cấp máy chủ. Bước này sẽ xác nhận sự thay đổi đối chiếu cơ sở dữ liệu hệ thống và máy chủ.

--Get collation of the SQL Server Instance and all databases
SELECT name, collation_name  
FROM sys.databases  
GO  
--Get an existing server-level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]

Đối chiếu cấp máy chủ và cấp cơ sở dữ liệu cho tất cả cơ sở dữ liệu hệ thống sử dụng SQL_Latin1_General_CP1_CS_AS trong ảnh chụp màn hình bên dưới. Bước này xác nhận rằng một đối chiếu mới đã được định cấu hình trên phiên bản SQL Server này.

Đối chiếu cấp máy chủ đã được thay đổi đối chiếu mới. Bước tiếp theo là đính kèm tất cả cơ sở dữ liệu người dùng đã được tách ra trước khi xây dựng lại cơ sở dữ liệu hệ thống. Hãy nhớ rằng, tất cả các cơ sở dữ liệu hiện có sẽ được đính kèm hoặc khôi phục sẽ có cùng một đối chiếu mà theo đó chúng được sao lưu hoặc tách rời. Bạn cần phải thay đổi thủ công sau khi thay đổi đối chiếu cấp máy chủ. Mặc dù, tất cả các cơ sở dữ liệu mới được tạo sẽ có một đối chiếu mới theo mặc định.

Tôi đã đính kèm cơ sở dữ liệu người dùng của mình như được hiển thị trong hình ảnh bên dưới.

Sau khi các cơ sở dữ liệu được đính kèm, bạn có thể kiểm tra lại sự đối chiếu của các cơ sở dữ liệu này. Nếu bạn muốn thay đổi đối chiếu của các cơ sở dữ liệu này, bạn có thể đọc bài viết trước của tôi để hoàn thành việc này.

Kết luận

Nếu bạn đã xuất dữ liệu từ cơ sở dữ liệu, bạn có thể thực thi tất cả các tập lệnh được tạo trong điều kiện tiên quyết để tạo các đối tượng cơ sở dữ liệu. Sau đó, bạn có thể nhập dữ liệu đã xuất trong các cơ sở dữ liệu và đối tượng mới được tạo này. Bạn có thể xác thực và sửa đổi cấu hình cấp máy chủ theo chi tiết mà chúng tôi đã tìm nạp trong phần điều kiện tiên quyết.

Bạn cũng có thể di chuyển các tệp cơ sở dữ liệu hệ thống nếu bạn muốn giữ chúng ở một vị trí cụ thể vì việc xây dựng lại cơ sở dữ liệu hệ thống sẽ tạo chúng ở một vị trí mặc định. Cũng có thể thực thi các tập lệnh để tạo thông tin đăng nhập và công việc với sự trợ giúp của các tập lệnh được tạo trước đó. Không khôi phục cơ sở dữ liệu hệ thống vì nó sẽ thay đổi đối chiếu mới được định cấu hình thành đối chiếu cũ hơn cho cơ sở dữ liệu đó.

Vui lòng chia sẻ bài viết này và cung cấp cho chúng tôi phản hồi của bạn để chúng tôi có thể cải thiện.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT max (x) trả về null; làm thế nào tôi có thể làm cho nó trả về 0?

  2. Trả lại các khóa chính từ một máy chủ được liên kết trong SQL Server (Ví dụ T-SQL)

  3. Giá trị cột nhận dạng máy chủ SQL bắt đầu từ 0 thay vì 1

  4. Tôi không thể khởi động trình duyệt SQL Server

  5. Lỗi chuyển đổi dữ liệu tải hàng loạt (loại ký tự không khớp hoặc không hợp lệ cho mã hóa được chỉ định) cho hàng 1, cột 4 (Năm)