使用AutoIT连接到远程SQL Server时出现问题

时间:2012-10-05 17:20:04

标签: sql database sql-server-2008 autoit remote-connection

我正在尝试创建一种登录机制,通过该机制,如果凭据正确,您可以在专用网络中访问远程SQL Server 2008 R2数据库。我打算在我的工作服务器上实现数据库,并在与服务器位于同一子网的客户端上实现此程序。到目前为止,这是我的代码:

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。
  6. 我可以使用服务器IP在本地连接到我的数据库但是在尝试从远程客户端连接到服务器时出现以下错误:

      

    错误描述是:[Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。

    奇怪的是,我可以使用sqlcmd从远程客户端连接。我还要提到我目前正在使用笔记本电脑来保存我的测试数据库。它的IP由DCHP服务器从工作中分配,并始终保持不变。

    我的代码是否不正确或我是否必须进行其他服务器/客户端配置?

1 个答案:

答案 0 :(得分:0)

我建议用autoit编写客户端和服务器,而不是那样做。将服务器放到远程计算机上并使其与本地数据库进行交互。比回报你想要的客户。这种方法也更安全。 Here is where you can start