2012-10-05 75 views
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 

我也做了以下措施:

  1. 使用SQL Server Management Studio中允許遠程連接以及正確的用戶訪問正確的權限數據庫。
  2. 使用SQL Server配置管理器啓用SQL Server Browser和具有正確配置的TCP/IP協議來訪問服務器。
  3. 創建防火牆入站和出站規則,允許服務器和客戶端訪問TCP端口1433和UDP端口1434(以防萬一)。
  4. sqlservr.exesqlbrowser.exe添加到防火牆允許的程序列表中。
  5. 在客戶端PC上安裝SQL Server Native Client 2008 R2。

我可以使用服務器IP本地連接到我的數據庫,但我得到試圖從遠程客戶端連接到服務器時出現以下錯誤:

err.description是:[微軟] [ODBC SQL Server驅動程序] [DBNETLIB] SQL Server不存在或訪問被拒絕。

奇怪的是,我可以使用sqlcmd遠程客戶端連接。我還必須提及,我目前正在使用我的筆記本電腦來保存我的測試數據庫。它的IP由DCHP服務器從工作中分配並始終保持不變。

我的代碼是否有誤或是否必須進行其他服務器/客戶端配置?

回答

0

而不是這樣做,我建議客戶端和服務器寫在自動。將服務器放到遠程計算機上,並使其與本地數據庫交互。比你想要的客戶還要多。這種方法也更安全。 Here is where you can start