как вы делаете подключение класса для подключения к удаленной базе данных? - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть соединение с классом, но оно не работает. Он работает в той же сети (интрасети), но не работает через Интернет.

Это SQL Server - у меня есть пользователь, пароль - и этот приватный ip, публичный ip - 189.148.67.149

Я настроил SQL Server для приема tcp / ip, но приложение не работает:

Ошибка, связанная с конкретной сетью или экземпляром, когда установилось соединение с подчиненным SQL Server. Не был слугой или этот был недоступен. Он проверяет, что имя экземпляра является правильным и что SQL Server сформирован для допуска удаленных подключений. (провайдеру: поставщик TCP, ошибка: 0 - произошла ошибка при попытке подключения, поскольку подключенная часть не ответила надлежащим образом через некоторое время, или произошла ошибка в установленном соединении, так как хост не был подключен в состоянии ответить.)

Я перевёл это с http://es.babelfish.yahoo.com/translate_txt по-испански (мой язык)

Ошибка соотвественно констатируется, когда возникает конкретная ситуация, возникающая при работе с сервером SQL Server. Не допускается наличие каких-либо ограничений. Вы можете воспользоваться всеми необходимыми инструментами для корректной работы SQL Server с настройкой параметров удаленного взаимодействия. (провайдер: Proveedor de TCP, ошибка: 0 - Произошла ошибка с указанием правильного намерения, без каких-либо ответных действий, без ответных действий, без ошибок, без каких-либо отклонений в исходном состоянии, без ответа, без ответа, без ответа) ха-ответчик.)

class Conexion
{
     public SqlConnection conectar()
    {
        //my pc is called alumno-auc
        SqlConnection con = new SqlConnection(@"Data Source=192.168.1.82,1433;Initial Catalog=misnotas;Persist Security Info=True;User ID=login2; Password=login2; Asynchronous Processing=True;TrustServerCertificate=False;Network Library=dbmssocn;Workstation ID=alumno-auc;User Instance=False"); 
        return con;
    }

    public void EjecutarConsulta(SqlCommand comando)
    {
        comando.Connection.Open(); // abrimos la conexion
        comando.ExecuteNonQuery(); // ejecutamos la consulta
        comando.Connection.Close(); // y cerramos la conexion
    }
}

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Есть ли межсетевой экран между сервером и общедоступным Интернетом? Нужно ли менять правило брандмауэра или переадресацию портов, чтобы разрешить публичный доступ? У вас на компьютере работает программный брандмауэр? См. http://www.sevenforums.com/system-security/58817-remote-access-sql-server-express-2008-windows-7-a.html для получения информации о брандмауэре Windows в Windows 7 для Sql express.

Это руководство по устранению неполадок должно быть полезным - http://blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx

Вы уверены, что хотите, чтобы ваш SQL-сервер находился в общедоступном Интернете? Вы действительно должны знать, как управлять своей безопасностью, если вы делаете это. Обычно не рекомендуется.

Я попытался подключиться к вашему серверу, используя предоставленную вами информацию. Я получил следующую ошибку из SQL Server Management Studio 2008:

НАЗВАНИЕ: Подключение к серверу

Невозможно подключиться к 189.148.67.149.

------------------------------ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Сетевой или экземплярный произошла ошибка при установлении подключение к SQL Server. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра правильно и что SQL Server настроен для разрешения удаленного соединения. (поставщик: именованные трубы Поставщик, ошибка: 40 - Не удалось открыть подключение к SQL Server) (Microsoft SQL Server, ошибка: 53)

Для получения справки нажмите: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=53&LinkId=20476

------------------------------ КНОПКИ:

OK

1 голос
/ 09 июня 2011

Оригинальное сообщение об исключительной ситуации на английском языке можно найти по адресу www.unlocalize.com , а также несколько ссылок на существующие решения.

1 голос
/ 26 апреля 2011

Здесь много возможностей.

  1. Порт SQL Server не открыт на рассматриваемом сервере.
  2. Экземпляры SQL Server используют нестандартный порт.
  3. Экземпляр SQL Server не имеет службы обозревателя SQL, поэтому он не принимает удаленные подключения.
  4. У вас неверный протокол для подключения.

Я уверен, что могу думать о других, если уделить немного больше времени.

...