SQLGetDiagRec trả lại mã lỗi gốc. Có bất cứ nơi nào một tổng quan về các mã lỗi của SQL Server 2012? Tôi không thể tìm thấy bất cứ điều gì trên MSDN.Có tổng quan về tất cả các mã lỗi SQL Server 2012 không?
Trả lời
use master
select * from sysmessages
Tìm kiếm trong cơ sở dữ liệu để nhận được thông báo không thực sự là một lựa chọn. Có lẽ cơ sở dữ liệu không còn nữa. Vì vậy, tôi thực sự cần một danh sách các mã lỗi mà tôi có thể xử lý trong mã. – Antineutrino
Danh sách các thông báo lỗi trong cơ sở dữ liệu là một danh sách tĩnh. Bạn có thể thực hiện truy vấn trên một SQL Server cài đặt để xem danh sách đầy đủ các mã lỗi và các thông điệp liên quan. Bạn có thể sử dụng các message_ids từ danh sách đó trong mã để xử lý theo cách bạn muốn. – Travis
Tôi không thể tìm thấy danh sách các mã riêng lẻ trên internet. Tuy nhiên tôi đã tìm thấy một danh sách các mức độ nghiêm trọng here trên MSDN. Họ là như sau:
mức Mức độ nghiêm trọng/Mô tả
- 0-9: Thông báo thông tin trả về thông tin tình trạng hoặc báo cáo lỗi mà không phải là nghiêm trọng. Cơ sở dữ liệu không nâng cao hệ thống lỗi với mức độ nghiêm trọng từ 0 đến 9.
- 10: Thông báo về trạng thái trả về thông tin trạng thái hoặc lỗi báo cáo không nghiêm trọng. Vì lý do tương thích, Công cụ cơ sở dữ liệu chuyển đổi mức độ nghiêm trọng 10 thành mức độ nghiêm trọng 0 trước khi trả về thông tin lỗi cho ứng dụng gọi .
- 11-16: Cho biết lỗi có thể được sửa bởi người dùng .
- 11: Cho biết đối tượng hoặc đối tượng đã cho không tồn tại.
- 12: Mức độ nghiêm trọng đặc biệt đối với truy vấn không sử dụng khóa do gợi ý truy vấn đặc biệt. Trong một số trường hợp, các hoạt động đọc được thực hiện bởi các báo cáo này có thể dẫn đến dữ liệu không nhất quán, vì khóa là không được thực hiện để đảm bảo tính nhất quán.
- 13: Cho biết giao dịch lỗi bế tắc.
- 14: Cho biết các lỗi liên quan đến bảo mật, chẳng hạn như quyền bị từ chối.
- 15: Cho biết lỗi cú pháp trong lệnh Transact-SQL .
- 16: Cho biết các lỗi chung có thể được sửa bởi người dùng .
- 17-19: Cho biết lỗi phần mềm không thể được sửa bởi người dùng . Thông báo cho quản trị viên hệ thống của bạn về sự cố.
- 17: Cho biết tuyên bố đã khiến SQL Server hết tài nguyên (chẳng hạn như bộ nhớ, ổ khóa hoặc không gian đĩa cho cơ sở dữ liệu) hoặc vượt quá giới hạn do quản trị viên hệ thống đặt.
- 18: Cho biết sự cố trong phần mềm Công cụ cơ sở dữ liệu , nhưng tuyên bố hoàn thành việc thực thi và kết nối với cá thể của Cơ sở dữ liệu được duy trì. Quản trị viên hệ thống phải được thông báo mỗi khi có thông báo với số mức độ nghiêm trọng là 18.
- 19: Cho biết rằng giới hạn Cơ sở dữ liệu không được định cấu hình đã bị vượt quá và quy trình thực hiện hàng loạt đã bị chấm dứt. Thông báo lỗi có mức độ nghiêm trọng là 19 hoặc cao hơn ngăn chặn việc thực thi lô hiện tại. Mức độ nghiêm trọng 19 lỗi rất hiếm và phải được quản trị viên hệ thống sửa chữa hoặc nhà cung cấp hỗ trợ chính của bạn. Liên hệ với quản trị viên hệ thống của bạn khi một thông báo có mức độ nghiêm trọng cấp 19 được nêu ra.Thông báo lỗi có mức độ nghiêm trọng từ 19 đến 25 được ghi vào nhật ký lỗi.
- 20-24: Chỉ ra các sự cố hệ thống và là lỗi nghiêm trọng, có nghĩa là rằng tác vụ Cơ sở dữ liệu đang thực thi câu lệnh hoặc lô không còn chạy nữa. Nhiệm vụ ghi lại thông tin về những gì xảy ra và sau đó chấm dứt. Trong hầu hết các trường hợp, ứng dụng kết nối với cá thể của Cơ sở dữ liệu cũng có thể chấm dứt. Nếu điều này xảy ra, tùy thuộc vào sự cố, ứng dụng có thể không có thể kết nối lại. Thông báo lỗi trong phạm vi này có thể ảnh hưởng đến tất cả các quy trình truy cập dữ liệu trong cùng một cơ sở dữ liệu và có thể chỉ ra rằng cơ sở dữ liệu hoặc đối tượng bị hỏng. Thông báo lỗi có mức độ nghiêm trọng cấp từ 19 đến 24 được ghi vào nhật ký lỗi.
- 20: Cho biết rằng một tuyên bố đã gặp sự cố. Bởi vì vấn đề có chỉ ảnh hưởng đến tác vụ hiện tại, có khả năng cơ sở dữ liệu đã bị hỏng.
- 21: Cho biết rằng sự cố đã xảy ra là gặp phải ảnh hưởng đến tất cả các tác vụ trong cơ sở dữ liệu hiện tại, nhưng đó là không chắc rằng bản thân cơ sở dữ liệu đã bị hỏng.
- 22: Cho biết rằng bảng hoặc chỉ mục được chỉ định trong thư đã bị hỏng bởi sự cố phần mềm hoặc phần cứng. Lỗi mức độ nghiêm trọng 22 xảy ra hiếm khi. Nếu có xảy ra, hãy chạy DBCC CHECKDB để xác định xem các đối tượng khác trong cơ sở dữ liệu cũng bị hư hại hay không. Sự cố có thể chỉ ở trong bộ nhớ cache của bộ đệm chứ không phải trên chính đĩa đó. Nếu vậy, hãy khởi động lại phiên bản của Công cụ cơ sở dữ liệu để khắc phục sự cố. Để tiếp tục hoạt động, bạn phải kết nối lại với cá thể của Cơ sở dữ liệu; nếu không, hãy sử dụng DBCC để khắc phục sự cố. Trong một số trường hợp, bạn có thể phải khôi phục cơ sở dữ liệu. Nếu khởi động lại phiên bản của Công cụ Cơ sở dữ liệu không khắc phục được sự cố, thì sự cố xảy ra là trên đĩa. Đôi khi phá hủy đối tượng được chỉ định trong thông báo lỗi có thể giải quyết được sự cố. Ví dụ: nếu thông báo báo cáo rằng bản sao của Công cụ cơ sở dữ liệu đã tìm thấy hàng có chiều dài bằng 0 trong chỉ mục không được chỉ định, hãy xóa chỉ mục và tạo lại chỉ mục đó.
- 23: Cho biết tính toàn vẹn của toàn bộ cơ sở dữ liệu trong câu hỏi do sự cố phần cứng hoặc phần mềm. Mức độ nghiêm trọng 23 lỗi hiếm khi xảy ra. Nếu xảy ra, hãy chạy DBCC CHECKDB để xác định mức độ thiệt hại . Sự cố có thể chỉ nằm trong bộ nhớ cache chứ không phải trên chính đĩa đó. Nếu vậy, khởi động lại thể hiện của Cơ sở dữ liệu Engine khắc phục sự cố. Để tiếp tục làm việc, bạn phải kết nối lại với phiên bản của Cơ sở dữ liệu; nếu không, hãy sử dụng DBCC để sửa chữa sự cố. Trong một số trường hợp, bạn có thể phải khôi phục cơ sở dữ liệu.
- 24: Cho biết lỗi truyền thông. Quản trị viên hệ thống có thể phải khôi phục cơ sở dữ liệu. Bạn cũng có thể phải gọi nhà cung cấp phần cứng của mình.
Tôi tìm thấy mã cho MS SQL Server 2008 R2, nhưng hầu hết trong số đó là đúng đối với các phiên bản sau: http://technet.microsoft.com/en-us/library/cc645603(v=sql.105).aspx
Tôi cũng đang tìm kiếm một danh sách bản thân mình và phát hiện ra rằng bạn có thể xem chúng tất cả từ DB chủ bằng cách chạy câu lệnh:
SELECT * FROM sysmessages
Trong SQL server 2005 trở lên bạn có thể sử dụng này:
SELECT * FROM sys.messages
Như những người khác đã đề cập, bạn cũng có thể sử dụng (có sẵn trong SQL Server 2000):
SELECT * FROM sysmessages
https://technet.microsoft.com/en-us/library/cc645603(v=sql.105). aspx –