Проблемы с подключением к удаленному SQL Server с помощью AutoIT

Я пытаюсь создать механизм входа в систему, с помощью которого вы можете получить доступ к удаленной базе данных 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 и протокол TCP/IP с правильными конфигурациями для доступа к серверу.
  3. Создано правило входящего и исходящего трафика брандмауэра, которое разрешает доступ к TCP-порту 1433 и UDP-порту 1434 для сервера и клиента (на всякий случай).
  4. Добавлены sqlservr.exe и sqlbrowser.exe в список разрешенных программ брандмауэра.
  5. На клиентском ПК установлен SQL Server Native Client 2008 R2.

Я мог локально подключиться к своей базе данных, используя IP-адрес сервера, но при попытке подключиться с удаленного клиента к серверу я получаю следующую ошибку:

описание ошибки: [Microsoft][Драйвер ODBC SQL Server][DBNETLIB]SQL Server не существует или доступ запрещен.

Как ни странно, я мог подключиться с удаленного клиента, используя sqlcmd. Я также должен упомянуть, что в настоящее время я использую свой ноутбук для хранения своей тестовой базы данных. Его IP назначается сервером DCHP с работы и всегда остается неизменным.

Является ли мой код неправильным или мне нужно выполнить дополнительные настройки сервера/клиента?


person K33p3r    schedule 05.10.2012    source источник


Ответы (1)


Вместо этого я предлагаю написать клиент и сервер в autoit. Поместите сервер на удаленный компьютер и заставьте его локально взаимодействовать с базой данных. Чем вернуть то, что вы хотите клиенту. Этот подход также является более безопасным. Вот с чего можно начать

person Ken Lee    schedule 06.02.2013