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

Bẫy lỗi máy chủ được liên kết

SQL Server cung cấp một TRY CATCH cơ chế cho phép ứng dụng nhận ra rằng đã xảy ra sự cố và thực thi mã thích hợp để xử lý sự cố. Ví dụ:

BEGIN TRY
   <some code>
END TRY
BEGIN CATCH 
   PRINT 'This is the error: ' + error_message()
END CATCH

Mã trong TRY khối được thực hiện đầu tiên. Nếu xảy ra lỗi, quá trình thực thi sẽ được chuyển tới CATCH khối.

Ý nghĩa của việc xử lý lỗi là gì nếu bạn muốn sử dụng TRY CATCH với một máy chủ được liên kết? Trong trường hợp này, lỗi có thể xảy ra trong:

  1. Phiên bản SQL Server cục bộ.
  2. Giao diện SQL Server được sử dụng để tạo điều kiện kết nối với máy chủ từ xa.
  3. Giao diện được sử dụng để làm cho máy chủ từ xa có thể truy cập được vào SQL Server.

Thiết lập ví dụ của chúng tôi sẽ sử dụng máy chủ Salesforce.com làm máy chủ từ xa. Đối với loại máy chủ từ xa này, giao diện 2. là Nhà cung cấp Microsoft OLE DB cho Trình điều khiển ODBC và giao diện 3. là trình điều khiển ODBC Salesforce.com của Easysoft.

Lỗi sau xảy ra cục bộ trong SQL Server. Máy chủ được liên kết có tên SALESFORCE vẫn chưa được tạo và do đó SQL Server không thể định vị nó:

BEGIN TRY
    EXEC('SELECT * FROM OPENQUERY(SALESFORCE, ''SELECT * FROM LEASE'')')
END TRY
BEGIN CATCH 
    PRINT 'This is the error: ' + error_message()
END CATCH
This is the error: Could not find server 'SALESFORCE' in sys.servers. Verify that
the correct server name was specified. If necessary, execute the stored procedure
sp_addlinkedserver to add the server to sys.servers.

Lỗi tiếp theo xảy ra trong lớp Microsoft OLE DB Provider cho ODBC Drivers. Máy chủ được liên kết có tên SALESFORCE tham chiếu nguồn dữ liệu ODBC có chứa chi tiết kết nối cho máy chủ Salesforce.com mục tiêu. Tuy nhiên, SQL Server là 64-bit nhưng nguồn dữ liệu ODBC đã được thiết lập trong Quản trị viên ODBC 32-bit. Kết nối không thành công do lỗi "kiến trúc không khớp"

OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message
"[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture
mismatch between the Driver and Application".
This is the error: Cannot initialize the data source object of OLE DB provider
"MSDASQL" for linked server "SALESFORCE".

Lưu ý rằng việc diễn giải lỗi OLE DB của SQL Server đã bị bắt bởi CATCH khối. Lỗi "thô" đối với lớp OLEDB thì không.

Lỗi cuối cùng này xảy ra trong lớp ODBC được sử dụng để kết nối với Salesforce.com. Truy vấn chọn tham chiếu đến đối tượng Salesforce.com tùy chỉnh ("LEASE") chưa được kích hoạt và phổ biến. "[Easysoft ODBC] Không tìm thấy bảng cơ sở hoặc dạng xem LEASE" là lỗi từ trình điều khiển ODBC, được chuyển đến và hiển thị bởi Nhà cung cấp Microsoft OLE DB cho Trình điều khiển ODBC. Như trong ví dụ trước, thông báo này không thể theo dõi, diễn giải của SQL Server về thông báo có thể truy xuất được.

OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message
"[Easysoft ODBC]Base table or view LEASE not found".
This is the error: An error occurred while preparing the query
"SELECT * FROM LEASE" for execution against OLE DB provider "MSDASQL" for linked
server "SALESFORCE".

Để biết thêm thông tin về việc xử lý lỗi SQL Server cả khi có và không có máy chủ được liên kết, hãy xem:

http://www.sommarskog.se/error_handling/Part1.html


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẬP NHẬT SQL cho người mới bắt đầu

  2. Giới thiệu về Khai thác dữ liệu

  3. Bộ đếm Knee-Jerk PerfMon:Kỳ vọng tuổi thọ của trang

  4. Giải pháp thử thách trình tạo chuỗi số - Phần 2

  5. Tìm hiểu cách tạo PK từ Trình kích hoạt trình tự trong Nhà phát triển SQL