0

資格情報が正しければ、プライベート ネットワークでリモートの 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.exeおよびsqlbrowser.exeをファイアウォールの許可されたプログラム リストに追加しました。
  5. クライアント PC に SQL Server Native Client 2008 R2 をインストールしました。

サーバー IP を使用してデータベースにローカルで接続できましたが、リモート クライアントからサーバーに接続しようとすると、次のエラーが表示されます。

err.description は: [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。

奇妙なことに、リモート クライアントから を使用して接続できましたsqlcmd。また、現在ラップトップを使用してテストデータベースを保持していることにも言及する必要があります。その IP は DCHP サーバーによって職場から割り当てられ、常に同じままです。

私のコードは間違っていますか、それとも追加のサーバー/クライアント構成を行う必要がありますか?

4

1 に答える 1

0

そのようにする代わりに、クライアントとサーバーを autoit で作成することをお勧めします。サーバーをリモート コンピューターに配置し、ローカルでデータベースとやり取りできるようにします。あなたがクライアントに望むものを返すよりも。このアプローチは、より安全でもあります。ここから始めることができます

于 2013-02-06T01:03:01.657 に答える