🔎解決 SQL Server Named Pipe 連線失敗與 Spotfire 建表錯誤的完整指南
前言
在安裝 TIBCO Spotfire 伺服器並執行資料庫初始化批次檔(create_actionlog_db.bat
)時,有時會遇到 SQL Server 連線錯誤,例如:
對不熟悉資料庫連線的人來說,這可能完全摸不著頭緒。其實,這是 SQL Server 連線通訊協定設定 與 批次檔連線參數 的組合問題。本文將用軟體工程師的角度,完整解釋原因並提供可行解法。
問題背景
Spotfire 安裝腳本會呼叫
sqlcmd
來建立 Action Log
資料表。然而:
-
找不到
sqlcmd
:-
系統未安裝 Microsoft SQL Server Command Line Utilities
-
或安裝後沒有設定 PATH
-
-
Named Pipes 連線失敗:
-
SQL Server 沒開啟 Named Pipes 協定
-
批次檔沒有帶正確的伺服器與實例名稱
-
SQL Server Browser 沒啟動
-
-
TCP/IP 未啟用:
-
批次檔默認使用 Named Pipes,若沒啟動就會失敗
-
沒設定固定 TCP 埠,導致命名實例連線解析失敗
-
常見錯誤訊息解析
1.
no named pipe instance matching '' returned from host
-
原因:
-S
參數傳入空值,批次檔沒接到伺服器名稱 -
解法:執行批次檔時帶上完整伺服器與實例,例如:
2. Timed out waiting for pipe
-
原因:Named Pipes 協定關閉或 SQL Server 服務未啟動
-
解法:啟動 SQL Server 服務,並在 Configuration Manager 中啟用 Named Pipes 或改用 TCP
解決步驟
步驟 1:安裝與確認
sqlcmd
若找不到,使用 Winget 安裝:
步驟 2:啟動 SQL Server 服務
-
打開 services.msc
-
找到 SQL Server (SQLEXPRESS) → 設為 Running
-
若用命名實例,啟動 SQL Server Browser
步驟 3:啟用 TCP/IP 並設定固定埠
-
開啟 SQL Server Configuration Manager
-
到 SQL Server Network Configuration → Protocols for SQLEXPRESS
-
啟用 TCP/IP
-
在 IPAll 中設定 TCP Port = 1433,清空 Dynamic Ports
-
重啟 SQL Server 服務
步驟 4:測試 TCP 連線
或使用 SQL 登入:
步驟 5:修改批次檔參數或內容
若批次檔支援參數,直接傳入 TCP 格式:
若不支援,打開 .bat
檔,將
-S %SERVER%
改為:
附加建議
-
固定埠 vs SQL Browser:
固定埠方便直連;若使用動態埠,需啟用 SQL Browser。 -
權限:
建立資料庫需要sysadmin
或dbcreator
權限。 -
日誌檔排錯:
批次檔失敗時,檢查actionlog.txt
會顯示完整 SQL 錯誤。
結論
這類 Spotfire + SQL Server 的安裝錯誤,核心原因大多是
連線協定與參數不正確。
只要依序確保:
-
sqlcmd
工具可用 -
SQL Server 服務啟動
-
TCP/IP 啟用且固定埠
-
批次檔帶正確的伺服器與實例
基本上就能解決 Named Pipes 連線錯誤,順利建立 Spotfire 所需的資料表。
留言
張貼留言