Có một số cách để lấy ngôn ngữ hiện đang được sử dụng trong SQL Server.
Ngôn ngữ của phiên hiện tại thường sẽ là ngôn ngữ mặc định cho đăng nhập, nhưng điều này không nhất thiết phải luôn luôn như vậy. Người dùng có thể thay đổi ngôn ngữ hiện tại trong phiên.
Ngoài ra, một số hàm tích hợp của SQL Server chấp nhận một đối số cho phép bạn chỉ định ngôn ngữ cho truy vấn cụ thể đó.
Bài viết này hướng dẫn bạn cách trả lại ngôn ngữ hiện đang được sử dụng.
@@ NGÔN NGỮ
@@LANGUAGE
chức năng cấu hình được tạo riêng để trả về tên của ngôn ngữ hiện đang được sử dụng.
Đây là một ví dụ về cách sử dụng.
SELECT @@LANGUAGE;
Kết quả:
us_english
Đây là ngôn ngữ mặc định cho đăng nhập của tôi.
Dưới đây là ví dụ về việc thay đổi ngôn ngữ trong phiên của tôi, sau đó chạy @@LANGUAGE
một lần nữa.
SET LANGUAGE British;
SELECT @@LANGUAGE;
Kết quả:
British
DBCC USEROPTIONS
DBCC USEROPTIONS
cũng cho phép bạn nhận ngôn ngữ hiện đang được sử dụng, cùng với một số tùy chọn cấu hình khác.
DBCC USEROPTIONS;
Kết quả:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | British | | dateformat | dmy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Tôi đã chạy truy vấn đó ngay sau ví dụ trước và vì vậy nó vẫn trả về ngôn ngữ là tiếng Anh.
Cũng lưu ý rằng ngôn ngữ ảnh hưởng ngầm định đến dateformat
và datefirst
các giá trị. Giá trị mặc định cho các giá trị đó khi sử dụng us_english
là mdy
và 7
tương ứng.
Nếu tôi thay đổi ngôn ngữ trở lại us_English
và chạy DBCC USEROPTIONS
một lần nữa, bạn sẽ thấy rằng dateformat
và datefirst
cài đặt hoàn nguyên về định dạng Hoa Kỳ.
SET LANGUAGE us_English; ....... DBCC USEROPTIONS; Time: 0.740s Changed language setting to us_english. +-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Tuy nhiên, bạn luôn có thể đặt định dạng ngày riêng biệt cho ngôn ngữ nếu bạn cần.
sys.dm_exec_requests
sys.dm_exec_requests
chế độ xem cho phép bạn truy xuất ngôn ngữ cho một quy trình người dùng cụ thể. Trong trường hợp này, chúng ta có thể sử dụng @@SPID
để chỉ định quy trình người dùng hiện tại.
SELECT r.language
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;
Kết quả:
us_english