2012-09-10 118 views
1

我已經建立了一個應用程序連接到MySQL數據庫和Sybase - SQL Anywhere中使用VB.NET和適當的ODBC連接數據庫。這是工作的罰款,直到我們不得不作出這一應用程序,它一直在後臺不論登錄的任何用戶運行的服務。Windows服務不能連接到SQL Anywhere數據庫

我構建的應用程序到服務和安裝後,該服務能夠成功連接到MySQL DB,但我連接到Sybase時,我收到以下錯誤(請注意在應用程序使用的連接字符串是完全一樣的)

ERROR [08001] [Sybase][ODBC Driver][SQL Anywhere]Database server not found 

該項目安裝程序 - 服務流程安裝1被配置爲本地系統

這裏的令人毛骨悚然的是,MySQL連接成功後,當相同的應用程序不是一個服務,連接到Sybase成功。一旦它變成服務,它就開始失敗。我有一個Windows 7 64位工作站和VS 2010

我一直在努力做的每一件事情的最後一個星期的時間解決它,但似乎沒有任何合作。任何建議將不勝感激。

+0

Anywhere DB和Sybase是否都是相同的DB系統?這裏 – rekire

+0

後連接字符串... –

+0

的connectionString = 「DSN = sybdsn;用戶ID = DBA;數據庫名稱= DB1;服務器= DB1;密碼= SQL」 連接字符串高於 – Aaron

回答

0

留意了簡單的勝利程序是從登錄的用戶憑據運行,而Windows服務在系統帳戶運行(在你的情況)。您有兩個選項,更改連接字符串以連接特定用戶(如果您現在使用可信連接)或將Windows服務登錄用戶更改爲您的用戶。

+0

感謝您的輸入。我曾嘗試將其設置爲用戶。幸運的是,它是一款只有一個用戶的獨立筆記本電腦 - '我'。安裝後,它要求服務登錄,進入我的憑據,啓動服務(能夠看到我的登錄日誌中的作爲),但它仍然失敗,出現同樣的錯誤。當作爲應用程序運行我已經嘗試了這個使用兩種不同的連接字符串,這兩個作品 「的connectionString =」 DSN = sybdsn;用戶ID = DBA;數據庫名稱= DB1;服務器= DB1;密碼= SQL 「和的connectionString =」 DSN = sybdb; UID = DBA;?PWD = SQL」。作爲一個應用程序運行時,任何想法都工作 – Aaron

2

看起來像你使用的是DSN連接到SQL Anywhere。

首先,確保你已經配置爲系統DSN。然後,驗證您使用的是TCP/IP連接協議(ODBC管理 - >選擇系統DSN選項卡 - >選擇DSN列表 - >單擊配置 - >轉到網絡選項卡)和共享內存。

使用共享內存將不是工作從嘗試連接到SQL Anywhere數據庫服務器的Win服務。 我懷疑這是問題,因爲您可以使用相同的連接字符串從桌面應用程序進行連接。

使此工作的一種方法是將SQL Anywhere數據庫作爲網絡服務器啓動(開始 - >所有程序 - > Sql Anywhere 12(或11,具體取決於您的設置) - > SQL Anywhere - >網絡服務器。

這應該運行dbsvr12.exe,這將啓動監聽TCP端口上的連接。

然後,添加一個鏈接= TCPIP主機=本地主機您服務取勝連接字符串,並試試!

+1

這是老問題,但想反正添加評論我有一個非常類似的情況,添加鏈接= TCPIP固定的問題爲了我。 – Deke

相關問題