Настройка сервера базы данных для публикации веб-развертывания
В этом разделе описывается настройка сервера базы данных SQL Server 2008 R2 для поддержки веб-развертывания и публикации.
Задачи, описанные в этом разделе, являются общими для каждого сценария развертывания. Это не имеет значения, настроены ли веб-серверы для использования службы удаленного агента IIS (веб-развертывания), обработчика веб-развертывания или автономного развертывания или приложения, работающего на одном веб-сервере или ферме серверов. Способ развертывания базы данных может измениться в соответствии с требованиями безопасности и другими рекомендациями. Например, можно развернуть базу данных с примерами данных или без нее, а также развернуть сопоставления ролей пользователей или настроить их вручную после развертывания. Однако способ настройки сервера базы данных остается неизменным.
Вам не нужно устанавливать дополнительные продукты или средства для настройки сервера базы данных для поддержки веб-развертывания. Предположим, что сервер базы данных и веб-сервер работают на разных компьютерах, вам просто необходимо:
- Разрешить SQL Server обмениваться данными с помощью TCP/IP.
- Разрешить трафик SQL Server через любые брандмауэры.
- Присвойте учетной записи компьютера веб-сервера имя входа SQL Server.
- Сопоставляйте имя входа учетной записи компьютера с любыми необходимыми ролями базы данных.
- Предоставьте учетной записи, которая запустит развертывание имени входа SQL Server и разрешения создателя базы данных.
- Для поддержки повторных развертываний сопоставьте имя входа учетной записи развертывания с ролью базы данных db_owner .
В этом разделе показано, как выполнять каждую из этих процедур. Задачи и пошаговые руководства в этом разделе предполагают, что вы начинаете работу с экземпляром SQL Server 2008 R2 по умолчанию, работающим в Windows Server 2008 R2. Прежде чем продолжить, убедитесь, что:
- Windows Server 2008 R2 с пакетом обновления 1 (SP1) и установлены все доступные обновления.
- Сервер присоединен к домену.
- Сервер имеет статический IP-адрес.
- SQL Server 2008 R2 с пакетом обновления 1 (SP1) и установлены все доступные обновления.
Экземпляр SQL Server должен включать только роль служб ядро СУБД, которая включается автоматически в любую установку SQL Server. Однако для удобства настройки и обслуживания рекомендуется включить средства управления — базовые и средства управления — полные роли сервера.
Примечание.
Дополнительные сведения о присоединении компьютеров к домену см. в разделе "Присоединение компьютеров к домену и вход". Дополнительные сведения о настройке статических IP-адресов см. в разделе "Настройка статического IP-адреса". Дополнительные сведения об установке SQL Server см. в разделе "Установка SQL Server 2008 R2".
Включение удаленного доступа к SQL Server
SQL Server использует TCP/IP для взаимодействия с удаленными компьютерами. Если сервер базы данных и веб-сервер находятся на разных компьютерах, необходимо:
- Настройте параметры сети SQL Server, чтобы разрешить обмен данными через TCP/IP.
- Настройте любые аппаратные или программные брандмауэры, чтобы разрешить трафик TCP (и в некоторых случаях трафик протокола пользовательской диаграммы данных (UDP) на портах, используемых экземпляром SQL Server.
Чтобы включить взаимодействие SQL Server по протоколу TCP/IP, используйте диспетчер конфигурации SQL Server для изменения конфигурации сети для экземпляра SQL Server.
Включение взаимодействия SQL Server с помощью TCP/IP
В меню "Пуск" наведите указатель мыши на все программы, выберите Microsoft SQL Server 2008 R2, щелкните "Средства настройки" и выберите пункт диспетчер конфигурации SQL Server.
В области представления дерева разверните узел конфигурации сети SQL Server и выберите протоколы для MSSQLSERVER.
Примечание.
Если вы установили несколько экземпляров SQL Server, для каждого экземпляра появится элемент Protocols for[имя экземпляра] . Необходимо настроить параметры сети на основе экземпляра.
В области сведений щелкните правой кнопкой мыши строку TCP/IP и нажмите кнопку "Включить".
В диалоговом окне "Предупреждение" нажмите кнопку "ОК".
Необходимо перезапустить службу MSSQLSERVER, прежде чем новая конфигурация сети вступит в силу. Это можно сделать в командной строке, из консоли служб или из SQL Server Management Studio. В этой процедуре вы будете использовать SQL Server Management Studio.
Закройте диспетчер конфигурации SQL Server.
В меню "Пуск" наведите указатель на все программы, щелкните Microsoft SQL Server 2008 R2 и выберите SQL Server Management Studio.
В диалоговом окне "Подключение к серверу" в поле "Имя сервера" введите имя сервера базы данных и нажмите кнопку "Подключить".
В области обозреватель объектов щелкните правой кнопкой мыши родительский узел сервера (например, TESTDB1), а затем нажмите кнопку "Перезапустить".
В диалоговом окне Microsoft SQL Server Management Studio нажмите кнопку "Да".
После перезапуска службы закройте СРЕДУ SQL Server Management Studio.
Чтобы разрешить трафик SQL Server через брандмауэр, сначала необходимо знать, какие порты использует экземпляр SQL Server. Это зависит от того, как был создан и настроен экземпляр SQL Server:
- Экземпляр SQL Server по умолчанию прослушивает запросы (и отвечает) на TCP-порте 1433.
- Именованный экземпляр SQL Server прослушивает запросы (и отвечает) на динамически назначенный TCP-порт.
- Если служба браузера SQL Server включена, клиенты могут запрашивать службу через порт UDP 1434, чтобы узнать, какой TCP-порт будет использоваться для конкретного экземпляра SQL Server. Однако эта служба часто отключена по соображениям безопасности.
Если вы используете экземпляр SQL Server по умолчанию, необходимо настроить брандмауэр для разрешения трафика.
Направление | Из порта | Перенос | Тип порта |
---|---|---|---|
Входящий трафик | Любое | 1433 | TCP |
Исходящие | 1433 | Любое | TCP |
Примечание.
Технически клиентский компьютер будет использовать случайным образом назначенный TCP-порт от 1024 до 5000 для взаимодействия с SQL Server, и вы можете ограничить правила брандмауэра соответствующим образом. Дополнительные сведения о портах и брандмауэрах SQL Server см. в разделе "Номера портов TCP/IP", необходимые для обмена данными с SQL через брандмауэр и практическое руководство. Настройка сервера для прослушивания определенного TCP-порта (диспетчер конфигурации SQL Server).
В большинстве сред Windows Server, скорее всего, потребуется настроить брандмауэр Windows на сервере базы данных. По умолчанию брандмауэр Windows разрешает весь исходящий трафик, если правило не запрещает его. Чтобы веб-сервер мог связаться с базой данных, необходимо настроить правило для входящего трафика, которое разрешает tcp-трафик на номер порта, который использует экземпляр SQL Server. Если вы используете экземпляр SQL Server по умолчанию, можно использовать следующую процедуру для настройки этого правила.
Настройка брандмауэра Windows для разрешения связи с экземпляром SQL Server по умолчанию
На сервере базы данных в меню "Пуск " наведите указатель мыши на администрирование и выберите брандмауэр Windows с расширенной безопасностью.
В области представления дерева щелкните "Правила для входящего трафика".
В области "Действия" в разделе "Правила для входящего трафика" нажмите кнопку "Создать правило".
В мастере создания входящего правила на странице "Тип правила" выберите порт и нажмите кнопку "Далее".
На странице "Протокол и порты" убедитесь, что выбран TCP и в поле "Определенные локальные порты" введите 1433 и нажмите кнопку "Далее".
На странице "Действие" оставьте выбранное подключение и нажмите кнопку "Далее".
На странице "Профиль" оставьте выбранный домен, снимите флажки "Частный" и "Общедоступный" и нажмите кнопку "Далее".
На странице "Имя" присвойте правилу подходящее описательное имя (например, экземпляр SQL Server по умолчанию — сетевой доступ), а затем нажмите кнопку "Готово".
Дополнительные сведения о настройке брандмауэра Windows для SQL Server, особенно если вам нужно взаимодействовать с SQL Server по нестандартным или динамическим портам, см. в статье "Практическое руководство. Настройка брандмауэра Windows для ядро СУБД доступа".
Настройка имен входа и разрешений базы данных
При развертывании веб-приложения в службы IIS (IIS) приложение запускается с помощью удостоверения пула приложений. В среде домена удостоверения пула приложений используют учетную запись компьютера сервера, на котором они выполняются для доступа к сетевым ресурсам. Учетные записи компьютера принимают форму [доменное имя]</strong>[имя компьютера]$, например FABRIKAM\TESTWEB1$. Чтобы разрешить веб-приложению доступ к базе данных в сети, необходимо выполнить следующие действия.
- Добавьте имя входа для учетной записи компьютера веб-сервера в экземпляр SQL Server.
- Сопоставление имени входа учетной записи компьютера с любыми необходимыми ролями базы данных (обычно db_datareader и db_datawriter).
Если веб-приложение работает на ферме серверов, а не на одном сервере, необходимо повторить эти процедуры для каждого веб-сервера в ферме серверов.
Примечание.
Дополнительные сведения об удостоверениях пула приложений и доступе к сетевым ресурсам см. в разделе "Удостоверения пула приложений".
Эти задачи можно использовать различными способами. Чтобы создать имя входа, можно сделать следующее:
- Создайте имя входа вручную на сервере базы данных с помощью Transact-SQL или SQL Server Management Studio.
- Используйте проект SQL Server 2008 Server в Visual Studio для создания и развертывания имени входа.
Имя входа SQL Server — это объект уровня сервера, а не объект уровня базы данных, поэтому он не зависит от базы данных, которую требуется развернуть. Таким образом, вы можете создать имя входа в любой момент, и самый простой подход — создать имя входа вручную на сервере базы данных перед началом развертывания баз данных. Следующую процедуру можно использовать для создания входа в SQL Server Management Studio.
Создание имени входа SQL Server для учетной записи компьютера веб-сервера
На сервере базы данных в меню "Пуск " наведите указатель на все программы, щелкните Microsoft SQL Server 2008 R2 и выберите SQL Server Management Studio.
В диалоговом окне "Подключение к серверу" в поле "Имя сервера" введите имя сервера базы данных и нажмите кнопку "Подключить".
В области обозреватель объектов щелкните правой кнопкой мыши "Безопасность", наведите указатель мыши на "Создать" и нажмите кнопку "Войти".
В диалоговом окне "Вход — создать" в поле "Имя входа" введите имя учетной записи компьютера веб-сервера (например, FABRIKAM\TESTWEB1$).
Щелкните OK.
На этом этапе сервер базы данных готов к публикации в Интернете. Однако все развернутые решения не будут работать, пока не сопоставить имя входа учетной записи компьютера с необходимыми ролями базы данных. Сопоставление имени входа с ролями базы данных требует гораздо большего объема, так как вы не можете сопоставить роли до тех пор, пока вы не развернете базу данных. Чтобы сопоставить имя входа учетной записи компьютера с необходимыми ролями базы данных, можно:
- Назначьте роли базы данных имени входа вручную после первого развертывания базы данных.
- Используйте скрипт после развертывания, чтобы назначить роли базы данных имени входа.
Дополнительные сведения об автоматизации создания имен входа и сопоставлений ролей базы данных см. в разделе "Развертывание членства в роли базы данных в тестовых средах". Кроме того, можно использовать следующую процедуру для сопоставления имени входа учетной записи компьютера с необходимыми ролями базы данных вручную. Помните, что эту процедуру нельзя выполнить до тех пор, пока вы не развернете базу данных.
Сопоставление ролей базы данных с именем входа учетной записи компьютера веб-сервера
Откройте СРЕДУ SQL Server Management Studio, как и раньше.
В области обозреватель объектов разверните узел "Безопасность", разверните узел входа и дважды щелкните имя входа учетной записи компьютера (например, FABRIKAM\TESTWEB1$).
В диалоговом окне "Свойства входа" щелкните "Сопоставление пользователей".
В таблице входа пользователей, сопоставленной с этой таблицей входа, выберите имя базы данных (например, ContactManager).
В списке членства в роли базы данных выберите необходимые разрешения. В случае примера решения Диспетчера контактов необходимо выбрать db_datareader и db_datawriter роли.
Щелкните OK.
Хотя сопоставление ролей базы данных вручную чаще всего является более подходящим для тестовых сред, это менее желательно для автоматизированных или одно щелчков развертываний в промежуточных или рабочих средах. Дополнительные сведения об автоматизации этой задачи можно найти с помощью сценариев после развертывания в развертывании членства в роли базы данных в тестовых средах.
Примечание.
Дополнительные сведения о проектах сервера и проектах баз данных см. в разделе "Проекты базы данных SQL Server" Visual Studio 2010.
Настройка разрешений для учетной записи развертывания
Если учетная запись, используемая для запуска развертывания, не является администратором SQL Server, вам также потребуется создать имя входа для этой учетной записи. Чтобы создать базу данных, учетная запись должна быть членом роли сервера dbcreator или иметь эквивалентные разрешения.
Примечание.
При использовании веб-развертывания или VSDBCMD для развертывания базы данных можно использовать учетные данные Windows или учетные данные SQL Server (если экземпляр SQL Server настроен для поддержки проверки подлинности в смешанном режиме). В следующей процедуре предполагается, что вы хотите использовать учетные данные Windows, но при настройке развертывания вы не можете указать имя пользователя и пароль SQL Server в строка подключения.
Настройка разрешений для учетной записи развертывания
Откройте СРЕДУ SQL Server Management Studio, как и раньше.
В области обозреватель объектов щелкните правой кнопкой мыши "Безопасность", наведите указатель мыши на "Создать" и нажмите кнопку "Войти".
В диалоговом окне "Вход — создать" в поле "Имя входа" введите имя учетной записи развертывания (например, FABRIKAM\matt).
На панели "Выбор страницы" щелкните "Роли сервера".
Выберите dbcreator и нажмите кнопку "ОК".
Для поддержки последующих развертываний необходимо также добавить учетную запись развертывания в роль db_owner в базе данных после первого развертывания. Это связано с тем, что при последующих развертываниях вы изменяете схему существующей базы данных, а не создаете новую базу данных. Как описано в предыдущем разделе, вы не можете добавить пользователя в роль базы данных до тех пор, пока не создайте базу данных по очевидным причинам.
Сопоставление имени входа учетной записи развертывания с ролью базы данных db_owner
Откройте СРЕДУ SQL Server Management Studio, как и раньше.
В окне обозреватель объектов разверните узел "Безопасность", разверните узел входа и дважды щелкните имя входа учетной записи компьютера (например, FABRIKAM\matt).
В диалоговом окне "Свойства входа" щелкните "Сопоставление пользователей".
В таблице входа пользователей, сопоставленной с этой таблицей входа, выберите имя базы данных (например, ContactManager).
В списке членства в роли базы данных выберите роль db_owner .
Щелкните OK.
Заключение
Теперь сервер базы данных должен быть готов к принятию удаленных развертываний баз данных и разрешить удаленным веб-серверам IIS доступ к базам данных. Прежде чем пытаться развернуть и использовать базы данных, вам может потребоваться проверить следующие ключевые моменты:
- Вы настроили SQL Server для приема удаленных подключений TCP/IP?
- Вы настроили какие-либо брандмауэры для разрешения трафика SQL Server?
- Вы создали имя входа учетной записи компьютера для каждого веб-сервера, который будет получать доступ к SQL Server?
- Включает ли развертывание базы данных сценарий для создания сопоставлений ролей пользователя или создать их вручную после первого развертывания базы данных?
- Вы создали имя входа для учетной записи развертывания и добавили его в роль сервера dbcreator ?
Дополнительные материалы
Инструкции по развертыванию проектов баз данных см. в разделе "Развертывание проектов баз данных". Рекомендации по созданию членства в роли базы данных путем выполнения скрипта после развертывания см. в разделе "Развертывание членства в роли базы данных в тестовых средах". Инструкции по устранению уникальных проблем развертывания, которые представляют базы данных членства, см. в разделе "Развертывание баз данных членства в корпоративных средах".