Các cách có thể để xác định phiên bản SQL Server được triển khai là gì?
Tôi đã thử làm điều đó bằng phần mềm SQL Server. Tôi muốn làm điều đó bằng cách sử dụng một câu lệnh SQL dòng lệnh.
Các cách có thể để xác định phiên bản SQL Server được triển khai là gì?
Tôi đã thử làm điều đó bằng phần mềm SQL Server. Tôi muốn làm điều đó bằng cách sử dụng một câu lệnh SQL dòng lệnh.
Câu trả lời:
Sau đây là những cách có thể để xem phiên bản:
Phương pháp 1: Kết nối với phiên bản của SQL Server và sau đó chạy truy vấn sau:
Select @@version
Một ví dụ về đầu ra của truy vấn này như sau:
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009
10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Express
Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
Phương pháp 2: Kết nối với máy chủ bằng cách sử dụng Object Explorer trong SQL Server Management Studio. Sau khi Object Explorer được kết nối, nó sẽ hiển thị thông tin phiên bản trong ngoặc đơn, cùng với tên người dùng được sử dụng để kết nối với phiên bản cụ thể của SQL Server.
Phương pháp 3: Xem xét một vài dòng đầu tiên của tệp Errorlog cho trường hợp đó. Theo mặc định, nhật ký lỗi được đặt tại Tệp Chương trình \ Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG
và ERRORLOG.n
các tệp. Các mục có thể giống như sau:
2011-03-27 22:31:33.50 Server Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
Như bạn có thể thấy, mục nhập này cung cấp tất cả các thông tin cần thiết về sản phẩm, chẳng hạn như phiên bản, cấp độ sản phẩm, 64 bit so với 32 bit, phiên bản SQL Server và phiên bản HĐH mà SQL Server đang chạy.
Phương pháp 4: Kết nối với phiên bản của SQL Server, rồi chạy truy vấn sau:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Lưu ý Truy vấn này hoạt động với mọi phiên bản SQL Server 2000 hoặc phiên bản mới hơn
declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)
Cung cấp 8,00, 9,00, 10,00 và 10,50 cho SQL 2000, 2005, 2008 và 2008R2 tương ứng.
Ngoài ra, hãy thử các thủ tục mở rộng hệ thống xp_msver
. Bạn có thể gọi thủ tục được lưu trữ này như
exec master..xp_msver
TL; DR
SQLCMD -S (LOCAL) -E -V 16 -Q "IF(ISNULL(CAST(SERVERPROPERTY('ProductMajorVersion') AS INT),0)<11) RAISERROR('You need SQL 2012 or later!',16,1)"
IF ERRORLEVEL 1 GOTO :ExitFail
Điều này sử dụng SQLCMD (đi kèm với SQL Server) để kết nối với phiên bản máy chủ cục bộ bằng Windows auth, đưa ra lỗi nếu kiểm tra phiên bản không thành công và trả về @@ERROR
dòng lệnh ERRORLEVEL
nếu> = 16 (và dòng thứ hai đi đến :ExitFail
nhãn nếu đã nói ở trên ERRORLEVEL
là> = 1).
Watchas, Gotchas và thêm thông tin
Đối với SQL 2000+, bạn có thể sử dụng SERVERPROPERTY để xác định nhiều thông tin này.
Mặc dù SQL 2008+ hỗ trợ các thuộc tính ProductMajorVersion
& ProductMinorVersion
, ProductVersion
đã có từ năm 2000 (hãy nhớ rằng nếu một thuộc tính không được hỗ trợ thì hàm sẽ trả về NULL
).
Nếu bạn quan tâm đến các phiên bản trước đó, bạn có thể sử dụng PARSENAME
chức năng để phân chia ProductVersion
(nhớ "các phần" được đánh số từ phải sang trái tức là PARSENAME('a.b.c', 1)
trả về c
).
Cũng nên nhớ PARSENAME('a.b.c', 4)
trả về NULL
, vì SQL 2005 trở về trước chỉ sử dụng 3 phần trong số phiên bản!
Vì vậy, đối với SQL 2008+, bạn chỉ cần sử dụng:
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
CAST(SERVERPROPERTY('ProductMajorVersion') AS INT) AS ProductMajorVersion,
CAST(SERVERPROPERTY ('ProductMinorVersion') AS INT) AS ProductMinorVersion;
Đối với SQL 2000-2005, bạn có thể sử dụng:
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) AS ProductVersion_Major,
CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 2 ELSE 3 END) AS INT) AS ProductVersion_Minor,
CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 1 ELSE 2 END) AS INT) AS ProductVersion_Revision,
CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 0 ELSE 1 END) AS INT) AS ProductVersion_Build;
(đây PARSENAME(...,0)
là một bản hack để cải thiện khả năng đọc)
Vì vậy, kiểm tra phiên bản SQL 2000+ sẽ là:
IF (CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) < 10) -- SQL2008
OR (
(CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) = 10) -- SQL2008
AND (CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 2 ELSE 1 END) AS INT) < 5) -- R2 (this may need to be 50)
)
RAISERROR('You need SQL 2008R2 or later!', 16, 1);
Điều này đơn giản hơn nhiều nếu bạn chỉ quan tâm đến SQL 2008+ vì SERVERPROPERTY('ProductMajorVersion')
trả về NULL
các phiên bản cũ hơn, vì vậy bạn có thể sử dụng:
IF (ISNULL(CAST(SERVERPROPERTY('ProductMajorVersion') AS INT), 0) < 11) -- SQL2012
RAISERROR('You need SQL 2012 or later!', 16, 1);
Và bạn có thể sử dụng các thuộc tính ProductLevel
và Edition
(hoặc EngineEdition
) để xác định RTM / SP n / CTP n và Dev / Std / Ent / etc tương ứng.
SELECT
CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME) AS ProductVersion,
CAST(SERVERPROPERTY('ProductLevel') AS SYSNAME) AS ProductLevel,
CAST(SERVERPROPERTY('Edition') AS SYSNAME) AS Edition,
CAST(SERVERPROPERTY('EngineEdition') AS INT) AS EngineEdition;
FYI số phiên bản SQL chính là:
Và tất cả điều này cũng hoạt động cho SQL Azure!
EDITED: Bạn cũng có thể muốn kiểm tra mức độ tương thích DB của mình vì nó có thể được đặt thành mức độ tương thích thấp hơn.
IF EXISTS (SELECT * FROM sys.databases WHERE database_id=DB_ID() AND [compatibility_level] < 110)
RAISERROR('Database compatibility level must be SQL2008R2 or later (110)!', 16, 1)
Đơn giản chỉ cần sử dụng
SELECT @@VERSION
Sản lượng mẫu
Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
Nguồn: Làm thế nào để kiểm tra phiên bản máy chủ sql? (Nhiều cách giải thích)