Чтение данных SQL Server через интернет
Приложения могут нуждаться в доступе к серверу SQL Server через интернет по многим причинам. Например, клиентское приложение, выполняющееся на удаленном компьютере за пределами локальной сети, может обращаться к серверу SQL Server через интернет. Приложение, написанное для другой платформы и не имеющее поддержки поставщиков ODBC или OLE DB, может использовать HTTP как канал для связи с SQL Server.
В зависимости от сетевого протокола, используемого вызывающим приложением, можно при желании открыть доступ к серверу SQL Server либо через протокол TCP/IP, либо через протокол HTTP. Оба подхода настраиваются в SQL Server особым образом, причем возможности, предоставляемые вызывающему приложению каждым из этих подходов, не одинаковы.
Если вы открываете доступ к SQL Server из внешних сетей, следует проявить особенную осторожность в решении вопроса о том, какие ресурсы и функциональные возможности сделать доступными для внешних вызывающих модулей; кроме того, необходимо реализовать инфраструктуру обеспечения безопасности, чтобы не подвергать систему баз данных риску нарушения безопасности.
Еще один подход заключается в предоставлении доступа через компонент среднего уровня, который прослушивает нужный сетевой порт и перенаправляет вызовы серверу SQL Server; при этом сервер остается закрытым для доступа из внешних сетей, тем самым риск компрометации базы данных уменьшается.
Прямой доступ к серверу SQL Server
Чтобы предоставить прямой доступ к серверу SQL Server из внешней сети, сначала нужно решить, какой протокол передачи данных клиентское приложение будет использовать для связи с сервером. В этом разделе мы сконцентрируемся на следующих моментах:
- Создании собственного соединения SQL Server через TCP/IP
- Вызовах SQL Server через конечную точку HTTP
Реализуя любой из этих двух подходов, следует не забывать о требованиях безопасности.
Подключение через TCP/IP
При использовании протокола TCP/IP SQL Server реализует собственный протокол передачи данных, который называется Tabular Data Stream, TDS (Протокол передачи табличных данных). Клиентское приложение должно использовать совместимый поставщик (ODBC, OLE DB или SQLNCLI), чтобы трансформировать свои запросы в формат TDS.
На рис. 5.1 показана минимальная рекомендуемая физическая инфраструктура, необходимая для того, чтобы обеспечить доступность SQL Server по протоколу TCP/IP через интернет.
Рис. 5.1. Физическая инфраструктура, необходимая для обеспечения доступа к серверу SQL Server по протоколу TCP/IP через интернет
Межсетевой экран ограничивает доступ к внутренней сети, перенаправляя только те запросы, которые предназначены конкретным TCP/IP-адресам локальной сети. Это означает, что:
- Клиентское приложение должно знать TCP/IP-адрес и сетевой порт, которые прослушивает SQL Server.
- Межсетевой экран должен быть сконфигурирован таким образом, чтобы разрешать доступ к определенным TCP/IP-адресам, прослушиваемым SQL Server.
Устанавливаем соединение с сервером SQL Server по протоколу TCP/IP через интернет
- Убедитесь, что на сервере SQL Server включен протокол передачи данных TCP/IP.
- Сконфигурируйте экземпляр SQL Server на прослушивание определенных IP-адресов.
- Сообщите клиентскому приложению точный IP-адрес и порт, которые прослушивает сервер SQL Server, откройте соединение со стороны клиентского приложения и выполните запросы.
Эти действия детализируются в следующих разделах данной лекции.
Проверяем, включен ли протокол TCP/IP на сервере SQL Server
SQL Server обеспечивает поддержку нескольких протоколов передачи данных. Чтобы проверить, включен ли протокол TCP/IP, выполните следующие действия:
- В меню Start (Пуск) выберите All Programs,. Microsoft SQL Server 2005, Configuration Tools, SQL Server Configuration Manager. (Все программы, Microsoft SQL Server 2005, Средства настройки, Диспетчер конфигурации SQL Server). Окно Диспетчера конфигурации SQL Server показано на следующем рисунке:
- В дереве объектов в левой части окна щелкните значок "плюс" (+) рядом с узлом SQL Server Network Configuration (Сетевая конфигурация SQL Server 2005). Выделите узел Protocols For (Протоколы для) <имя_экземпляра> для того экземпляра SQL Server, который нужно сконфигурировать:
- В правой панели окна отображается список доступных сетевых протоколов. Если протокол TCP/IP помечен как Enabled (Включен), то сервер готов принимать соединения по протоколу TCP/IP. Если TCP/ IP находится в состоянии Disabled (Отключен), то нужно щелкнуть правой кнопкой мыши пиктограмму TCP/IP и выбрать из контекстного меню команду Enable (Включить), как показано на рисунке:
Средство Настройка контактной зоны SQL Server
Инструмент SQL Server Surface Area Configuration (Настройка контактной зоны SQL Server 2005) также можно использовать для проверки состояния протокола TCP/IP. Если вы воспользуетесь инструментом Настройка контактной зоны SQL Server, то сможете выполнить дополнительную настройку доступных протоколов передачи данных. Чтобы использовать этот инструмент, выполните следующие действия:
- В меню Start (Пуск) выберите All Programs,. Microsoft SQL Server 2005, Configuration Tools, SQL Server Surface Area Configuration. (Все программы, Microsoft SQL Server 2005, Средства настройки, Настройка контактной зоны SQL Server). Окно Диспетчера конфигурации SQL Server показано на следующем рисунке.
- Щелкните ссылку Surface Area Configuration For Services And Connection (Настройка контактной зоны для служб и соединений) в нижней части окна.
- В окне Surface Area Configuration For Services And Connection (Настройка контактной зоны для служб и соединений) в дереве в левой части окна щелкните значок плюс (+) рядом с экземпляром SQL Server, который нужно сконфигурировать. Аналогичным образом разверните дерево узла Database Engine, а затем выделите узел Remote Connections (Удаленные соединения), как показано ниже:
- В правой части окна выберите вариант Local And Remote Connections (Локальные и удаленные соединения), а затем вариант Using TCP/IP Only (Использовать только TCP/IP):
- Нажмите кнопку ОК. SQL Server проинформирует вас о том, что изменения вступят в силу после перезапуска службы SQL Server.