Общий доступ через сеть (ИНТРАНЕТ) с использованием .СЕТЕВОЕ приложение

#c# #.net #sql-server

#c# #.net #sql-сервер

Вопрос:

Я разрабатываю приложение winforms с использованием .NET 2.0 и Sql Server 2005. Я хочу просто повторно использовать значения с другого компьютера с компьютера, на котором присутствует база данных SQLServer.

Настройки приложений, которые я сделал в App.Config, следующие:

     <configuration>
  <appSettings>
    <add key="DatabasePath"
     value="Data Source=192.168.1.34,1433;Network Library=DBMSSOCN;
     Initial Catalog=testingdb;User ID=sa;pwd=pass;"/>
  </appSettings>
</configuration>
  

Но я не могу получить значения (имя и возраст) с сервера на другой компьютер.
Пожалуйста, дайте мне решение.

При извлечении отображается следующая ошибка:

 See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Connect(Booleanamp; useFailoverPartner, Booleanamp; failoverDemandDone, String host, String failoverPartner, String protocol, SqlInternalConnectionTds connHandler, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject, Boolean aliasLookup)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at OnlineTest.AdminUser.adminenter() in F:Online Test - IntranetOnlineTestOnlineTestAdminUser.cs:line 63
   at OnlineTest.AdminUser.btnok_Click(Object sender, EventArgs e) in F:Online Test - IntranetOnlineTestOnlineTestAdminUser.cs:line 56
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Messageamp; m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Messageamp; m)
   at System.Windows.Forms.ButtonBase.WndProc(Messageamp; m)
   at System.Windows.Forms.Button.WndProc(Messageamp; m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Messageamp; m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Messageamp; m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
OnlineTest
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program Files/SystemOrganization/Setup1/OnlineTest.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
  

Ответ №1:

Ваш SQL server не принимает попытку подключения. Может быть вашей строкой подключения, см. http://www.connectionstrings.com /. Возможно, это настройка вашего сервера. Требуется дополнительная информация для эффективного устранения неполадок.

альтернативный текст http://img408.imageshack.us/img408/3558/40512042.png

Комментарии:

1. Это ошибка, показанная в диалоговом окне. Выше, что я привел, скрыты подробности об этой ошибке. При установлении соединения с сервером произошла ошибка. При подключении к SQL Server 2005 этот сбой может быть вызван тем фактом, что в настройках по умолчанию SQL Server не разрешает удаленные подключения. (Поставщик: поставщик TCP, ошибка: 0 — Попытка подключения завершилась неудачей, поскольку подключенная сторона не ответила должным образом через определенный промежуток времени, или установленный сбой соединения, поскольку подключенный хост не ответил.

2. Да, именно так, как там написано. Это опция в настройках базы данных. Я разместил снимок экрана в своем посте, где указаны настройки. Однако эта ошибка может отображаться при многих различных проблемах с подключением.

3. Я проверил это. По умолчанию флажок включен.

4. Теперь я отключаю брандмауэр Windows с серверного компьютера. Теперь он показывает следующую ошибку. Пользователю не удалось войти в систему «. Пользователь не связан с доверенным подключением к SQL Server.

5. Тогда у вас есть какая-то другая проблема с сетевым подключением. Можете ли вы пропинговать этот сервер? Можете ли вы подключиться по telnet к порту 1433? Дайте мне знать, если вы можете сделать что-либо из этого.

Ответ №2:

Вот несколько вещей, которые вы можете попробовать на компьютере, на котором запущен SQL Server:

1) Брандмауэр Windows

  • Убедитесь, что вы разрешаете sqlservr.exe в брандмауэре. Этот исполняемый файл обычно находится в $PROGRAMFILES$Microsoft SQL ServerMSSQL.1MSSQLBinnsqlservr.exe

  • Разрешить порты 445 , 1433 и 1434 в зоне интранета

  • Протестируйте свое приложение. Теперь найдите и разрешите только те порты, которые использует ваше приложение, и заблокируйте остальные

2) Подключение к SQL Server

  • Откройте SQL Server Configuration Manager

  • В Native Client Configuration разделе включите Shared Memory , TCP/IP и Named Pipes протоколы

  • Сразу после этого SQL Server Network Configuration . Убедитесь, что вышеуказанные протоколы там включены

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

Также, как и в ответе duralai, убедитесь, что SQL Server настроен на разрешение удаленных подключений. Обычно это включено по умолчанию, но стоит посмотреть еще раз.