2015-07-21 44 views
0

我在Delphi XE8中編寫客戶端和TWO服務器。 一個服務器是一個正常的程序,第二個是windows服務。兩個公開了相同的三個功能:在MS SQL 2008 R2數據庫上進行簡單的「ping」,文件傳輸和查詢。從德爾福XE8服務訪問SQL Server 2008 R2

當我使用客戶端和「程序」服務器時,一切正常,我可以在客戶端上編寫查詢,將查詢發送到服務器並接收數據。

當我使用客戶端和「服務」服務器時,某些部分工作,但是如果我可以在客戶端上編寫查詢,將查詢發送到服務器,服務器會收到查詢,但無法訪問數據庫。

我工作在VMWare虛擬機Win7 32位,Delphi XE8和TMS Sparkle作爲傳輸系統,以及DBExpress ad DB訪問。 我已關閉防病毒和防火牆。 SQL Server配置良好,協議,端口,瀏覽器正在運行。 該服務在本地系統下運行(每個其他用戶的服務無法啓動,我不明白爲什麼)。

我想TMS每次收到請求時都會創建一個線程,而我的代碼就在這個線程中。 在線程內我創建了一個表單,一個TSQLConnection和一個TSQLQuery,並嘗試打開連接。

在我的日誌中,我發現「SQL錯誤代碼:53」:未找到服務器或...(在「或」之後沒有任何內容)。

我想這可能是一個權限問題,但我不確定。

有些想法?

+0

「在線程內部創建表單」在服務內部? Btw是否嘗試使用UNC路徑名訪問任何資源? – MartynA

+0

嘗試使用「services.msc」上的管理員權限定義用戶和密碼。此外,由於服務應用程序無法調試,因此可以實施例程以在某些關鍵事件中保存文件日誌。這可以幫助您更準確地獲取錯誤內容。 –

+0

@ R.PSilveira Delphi服務應用程序可以使用「運行」菜單中的「附加到進程」項進行調試。 IDE需要以管理員權限運行。 –

回答

0

解決:我在SQL密碼中犯了一個錯誤...