我用delphi 7連接linux下的sqlserver2019,報 [DBNETLIB][ConnectionOpen(SECDoClientHandshake()).]SSL 。
服務端沒問題,用Microsoft SQL Server Management Studio 可以連上,用python也可以連上。
linux用的是Centos,ubuntu 。
程式是別人已經寫好的,不能改Delphi的原始碼,只能在SqlServer設定上想辦法。
請大家幫忙出出主意
謝謝大家~
uj5u.com熱心網友回復:
delphi 7應該是使用ADO或ODBC進行連接的,在客戶端連接MSSQL是需要有MSSQL驅動才可以。所以,你可以先試試能不能在ODBC里去連接到你的資料服務(是在你運行delphi程式的電腦上哈)。
還有,你可以檢查網路連接及服務器的網路配置。
uj5u.com熱心網友回復:
一 看ping 服務器IP能否ping通。這個實際上是看和遠程sql server 2000服務器的物理連接是否存在。如果不行,請檢查網路,查看配置,當然得確保遠程sql server 2000服務器的IP拼寫正確。
二 在Dos或命令列下輸入telnet 服務器IP 埠,看能否連通。
如telnet 202.114.100.100 1433
通常埠值是1433,因為1433是sql server 2000的對于Tcp/IP的默認偵聽埠。如果有問題,通常這一步會出問題。通常的提示是“……無法打開連接,連接失敗"。
如果這一步有問題,應該檢查以下選項。
1 檢查遠程服務器是否啟動了sql server 2000服務。如果沒有,則啟動。
2 檢查服務器端有沒啟用Tcp/IP協議,因為遠程連接(通過因特網)需要靠這個協議。檢查方法是,在服務器上打開開始選單->程式->Microsoft SQL Server->服務器網路實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。
3 檢查服務器的tcp/ip埠是否配置為1433埠。仍然在服務器網路實用工具里查看啟用協議里面的tcp/ip的屬性,確保默認埠為1433,并且隱藏服務器復選框沒有勾上。
事實上,如果默認埠被修改,也是可以的,但是在客戶端做telnet測驗時,寫服務器埠號時必須與服務器配置的埠號保持一致。如果隱藏服務器復選框被勾選,則意味著客戶端無法通過列舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認埠將被隱式修改為2433,在客戶端連接時必須作相應的改變。
4 如果服務器端作業系統打過sp2補丁,則要對windows防火墻作一定的配置,要對它開放1433埠,通常在測驗時可以直接關掉windows防火墻(其他的防火墻也關掉最好)。
5 檢查服務器是否在1433埠偵聽。如果服務器沒有在tcp連接的1433埠偵聽,則是連接不上的。檢查方法是在服務器的dos或命令列下面輸入
netstat -a -n 或者是netstat -an,在結果串列里看是否有類似 tcp 127.0.0.1 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在服務器端啟動查詢分析器,輸入 select @@version 執行后可以看到版本號,版本號在8.0.2039以下的都需要打補丁。
如果以上都沒問題,這時你再做telnet 服務器ip 1433 測驗,將會看到螢屏一閃之后游標在左上角不停閃動。恭喜你,你馬上可以開始在企業管理器或查詢分析器連接了。
三 檢查客戶端設定
程式->Microsoft SQL Server -> 客戶端網路使用工具。像在服務器網路實用工具里一樣,確保客戶端tcp/ip協議啟用,并且默認埠為1433(或其他埠,與服務器端保持一致就行)。
四 在企業管理器里或查詢那分析器連接測驗
企業管理器->右鍵SQlserver組->新建sqlserver注冊->下一步->寫入遠程IP->下一步->選Sqlserver登陸->下一步->寫入登陸名與密碼(sa,password)->下一步->下一步->完成
查詢分析器->檔案->連接->寫入遠程IP->寫入登錄名和密碼(sa,password)->確定
通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一臺SQL Server的超時設定是4秒,而查詢分析器是15秒。
修改默認連接超時的方法:
企業管理器->工具->選項->在彈出的"SQL Server企業管理器屬性"視窗中,點擊"高級"選項卡->連接設定->在 登錄超時(秒) 后面的框里輸入一個較大的數字
查詢分析器->工具->選項->連接->在 登錄超時(秒) 后面的框里輸入一個較大的數字
通常就可以連通了,如果提示錯誤,則進入下一步。
五 錯誤產生的原因通常是由于SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示:
1 在服務器端使用企業管理器,并且選擇"使用 Windows 身份驗證"連接上 SQL Server。
2 展開"SQL Server組",滑鼠右鍵點擊SQL Server服務器的名稱,選擇"屬性",再選擇"安全性"選項卡。
3 在"身份驗證"下,選擇"SQL Server和 Windows "。
4 重新啟動SQL Server服務。(在dos或命令列下面net stop mssqlserver停止服務,net start mssqlserver啟動服務,也是一種快捷的方法)。
附注:在連接本地服務器時,通常使用的是命名管道協議(在服務器網路實用工具里可以看到啟用的協議有這個),默認埠是445,因此在本地能連通是不能說明什么問題的,連接遠程服務器是完全不同的協議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/189549.html
標籤:數據庫相關
上一篇:xe7寫的android程式,用try。。。except為啥捕獲不到例外?
下一篇:關于json排序的問題
