Php

這些錯誤資訊是什麼意思?

  • April 5, 2017

這是在 PHP 腳本中的 AWS AMI EC2 Linux 實例上執行,使用 dblib 和 PDO 連接到遠端 Sybase 數據庫(Sybase 版本 11.0.1.2596)。伺服器具有具有以下設置的 freetds:

Compile-time settings (established with the "configure" script)
                       Version: freetds v0.91
        freetds.conf directory: /etc
MS db-lib source compatibility: yes
   Sybase binary compatibility: yes
                 Thread safety: yes
                 iconv library: yes
                   TDS version: 4.2
                         iODBC: no
                      unixodbc: yes
         SSPI "trusted" logins: no
                      Kerberos: yes

有時,當我們在 sybase 電腦上執行查詢時,我們會收到這樣的錯誤(令牌可能會有所不同):

TDS: unexpected token 95 [0] (severity 0) [(null)]

查詢有時會在出現此錯誤後執行,有時會失敗。我在網上搜尋過,但找不到此錯誤的含義或解決方法。以下是其中一個查詢的範例:

-- 999 | Hammil | 2017-04-05 08:23:29 
SELECT  
   999 as 'site_id',
   (select rest_name from micros.rest_def) as 'location',
   now() as 'dt_run',
   emp_seq,
   employee_number as 'obj_num',
   last_name,
   first_name,
   check_number,
   xfer_from_check,
   xfer_from_type,
   xfer_to_check,
   xfer_to_type,
   check_id,
   table_number,
   table_name,
   group_number,
   cover_count,
   order_type,
   order_type_name,
   business_date,
   check_open_date_time,
   check_closed_date_time,
   table_open_date_time,
   printed_count,
   sub_ttl,
   tax_ttl,
   auto_svc_ttl,
   other_svc_ttl,
   paymnt_ttl,
   amount_due_ttl,
   sp_error
FROM
   micros.micros.v_R_guest_checks x
where
   x.check_closed_date_time is null;

有時我們會收到此錯誤:

SQLSTATE[HY000]: General error: 20047 DBPROCESS is dead or not enabled [20047] (severity 1) [(null)]

發生這種情況時,我可以執行

nc -v -w 4 xxx.xxx.xxx.xxx 2638

它返回

Connection to xxx.xxx.xxx.xxx 2638 port [tcp/sybaseanywhere] succeeded!

但我會繼續收到錯誤幾分鐘,然後它就消失了。

TDS 中的意外標記表明向 Sybase 正在偵聽的 TCP 埠發送了錯誤的網路數據包。

這表明以下兩件事之一:

  1. TCP TDS 數據包損壞的間歇性網路連接問題
  2. 您有一些程序試圖在不使用 TDS 的情況下連接到 Sybase 實例。

我已經看到#2 發生在正在尋找開放埠的安全掃描程序中。

從您的症狀來看,這聽起來像是網路連接問題。由於 Sybase Anywhere 伺服器與您的客戶端電腦不在同一網段,我傾向於認為客戶端需要優雅地處理連接問題。

引用自:https://dba.stackexchange.com/questions/169191