Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menjebak Kesalahan Server Tertaut

SQL Server menyediakan TRY CATCH mekanisme untuk memungkinkan aplikasi menyadari bahwa ada sesuatu yang salah dan mengeksekusi kode yang sesuai untuk menangani masalah tersebut. Misalnya:

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

Kode di TRY blok dieksekusi terlebih dahulu. Jika terjadi kesalahan, eksekusi diteruskan ke CATCH blokir.

Apa implikasi untuk penanganan kesalahan jika Anda ingin menggunakan TRY CATCH dengan server yang terhubung? Dalam situasi ini, kesalahan dapat terjadi di:

  1. Contoh SQL Server lokal.
  2. Antarmuka SQL Server digunakan untuk memfasilitasi koneksi dengan server jauh.
  3. Antarmuka yang digunakan untuk membuat server jauh dapat diakses oleh SQL Server.

Contoh penyiapan kami akan menggunakan server Salesforce.com sebagai server jarak jauh. Untuk jenis server jarak jauh ini, antarmuka 2. adalah Penyedia Microsoft OLE DB untuk Driver ODBC dan antarmuka 3. adalah driver ODBC Salesforce.com Easysoft.

Galat berikut ini terjadi secara lokal di SQL Server. Server tertaut bernama SALESFORCE belum dibuat sehingga SQL Server tidak dapat menemukannya:

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.

Kesalahan berikutnya terjadi di Microsoft OLE DB Provider untuk lapisan ODBC Drivers. Server tertaut bernama SALESFORCE referensi sumber data ODBC yang berisi detail koneksi untuk server target Salesforce.com. Namun, SQL Server 64-bit tetapi sumber data ODBC telah disiapkan di Administrator ODBC 32-bit. Sambungan gagal dengan kesalahan "ketidakcocokan arsitektur"

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".

Perhatikan bahwa interpretasi SQL Server dari kesalahan OLE DB telah ditangkap oleh CATCH memblokir. Kesalahan "mentah" dari lapisan OLEDB belum.

Kesalahan terakhir ini terjadi di lapisan ODBC yang digunakan untuk terhubung ke Salesforce.com. Kueri pemilihan merujuk ke objek Salesforce.com kustom ("LEASE") yang belum diaktifkan dan diisi. "[Easysoft ODBC]Tabel dasar atau tampilan SEWA tidak ditemukan" adalah kesalahan dari pengandar ODBC, yang diteruskan ke dan ditampilkan oleh penyedia Microsoft OLE DB untuk pengandar ODBC. Seperti pada contoh sebelumnya, pesan ini tidak dapat dijebak, interpretasi SQL Server atas pesan tersebut dapat dijebak.

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".

Untuk informasi lebih lanjut tentang penanganan kesalahan SQL Server baik dengan dan tanpa server tertaut, lihat:

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. 7 Hal Utama yang Perlu Diingat Tentang Globalisasi Model Data

  2. Temukan bagaimana kardinalitas memengaruhi kinerja

  3. Labu dengan Contoh – Menyiapkan Postgres, SQLAlchemy, dan Alembic

  4. Kunci Utama SQL

  5. Cara memantau kesehatan instance database