0
我正在嘗試創建登錄機制,通過它可以訪問專用網絡中的遠程SQL Server 2008 R2數據庫(如果憑據正確)。我打算在我的工作服務器上執行數據庫,並在與服務器位於同一子網的客戶機上執行此程序。這是我到目前爲止的代碼:使用AutoIT連接到遠程SQL Server的問題
Func Login()
$loginGUI = GUICreate("Login", 250, 150, -1, -1) ; will create a dialog box that when displayed is centered
GUISetState(@SW_SHOW)
GUICtrlCreateLabel ("Input valid credentials to login", 40, 10,-1,-1)
GUICtrlCreateLabel ("Username", 40, 40,-1,-1)
Local $userInput = GUICtrlCreateInput("", 100, 37, 100, 20)
GUICtrlSetState($userInput, $GUI_FOCUS)
GUICtrlCreateLabel ("Password", 40, 70,-1,-1)
Local $passwordInput = GUICtrlCreateInput("", 100, 67, 100, 20, $ES_PASSWORD)
Local $loginButton = GUICtrlCreateButton("Login", 40, 105, 70)
Local $exitButton = GUICtrlCreateButton("Exit", 130, 105, 70)
GUISetState()
; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $loginButton
$user = GUICtrlRead($userInput)
$password = GUICtrlRead($passwordInput)
Global $loginCon = ObjCreate("ADODB.Connection")
With $loginCon
.ConnectionString =("DRIVER={SQL Server};SERVER=192.168.1.30\SQLEXPRESS;DATABASE=Test;UID="&$user&";PWD="&$password&";")
.Open
EndWith
If ($user ="" and $password="") or @error Then
MsgBox(48, "Login error", "Connection failed! Wrong Username/Password.")
GUICtrlSetData($userInput, "")
GUICtrlSetData($passwordInput, "")
GUICtrlSetState($userInput, $GUI_FOCUS)
Else
$loginCon.Close
GUIDelete()
Main()
ExitLoop
EndIf
Case $exitButton
GUIDelete()
ExitLoop
Case $GUI_EVENT_CLOSE
GUIDelete()
ExitLoop
EndSwitch
WEnd
EndFunc
我也做了以下措施:
- 使用SQL Server Management Studio中允許遠程連接以及正確的用戶訪問正確的權限數據庫。
- 使用SQL Server配置管理器啓用SQL Server Browser和具有正確配置的TCP/IP協議來訪問服務器。
- 創建防火牆入站和出站規則,允許服務器和客戶端訪問TCP端口1433和UDP端口1434(以防萬一)。
- 將
sqlservr.exe
和sqlbrowser.exe
添加到防火牆允許的程序列表中。 - 在客戶端PC上安裝SQL Server Native Client 2008 R2。
我可以使用服務器IP本地連接到我的數據庫,但我得到試圖從遠程客戶端連接到服務器時出現以下錯誤:
err.description是:[微軟] [ODBC SQL Server驅動程序] [DBNETLIB] SQL Server不存在或訪問被拒絕。
奇怪的是,我可以使用sqlcmd
遠程客戶端連接。我還必須提及,我目前正在使用我的筆記本電腦來保存我的測試數據庫。它的IP由DCHP服務器從工作中分配並始終保持不變。
我的代碼是否有誤或是否必須進行其他服務器/客戶端配置?