Configuração de um servidor de banco de dados para publicação de Implantação da Web
por Jason Lee
Este tópico descreve como configurar um servidor de banco de dados SQL Server 2008 R2 para dar suporte à implantação e publicação na Web.
As tarefas descritas neste tópico são comuns a todos os cenários de implantação, não importa se os servidores Web estão configurados para usar o Serviço de Agente Remoto da Ferramenta de Implantação da Web do IIS (Implantação da Web), o Manipulador de Implantação da Web ou a implantação offline ou se o aplicativo está em execução em um único servidor Web ou em um farm de servidores. A maneira como você implanta o banco de dados pode mudar de acordo com os requisitos de segurança e outras considerações. Por exemplo, você pode implantar o banco de dados com ou sem dados de exemplo e pode implantar mapeamentos de função de usuário ou configurá-los manualmente após a implantação. No entanto, a maneira como você configura o servidor de banco de dados permanece a mesma.
Você não precisa instalar nenhum produto ou ferramenta adicional para configurar um servidor de banco de dados para dar suporte à implantação da Web. Supondo que seu servidor de banco de dados e seu servidor web sejam executados em máquinas diferentes, você simplesmente precisa:
- Permitir que o SQL Server se comunique usando TCP/IP.
- Permitir o tráfego do SQL Server por meio de qualquer firewall.
- Dê à conta do computador do servidor Web um logon do SQL Server.
- Mapeie o logon da conta do computador para todas as funções de banco de dados necessárias.
- Conceda à conta que executará a implantação um logon do SQL Server e permissões de criador de banco de dados.
- Para dar suporte a implantações repetidas, mapeie o logon da conta de implantação para a função de banco de dados db_owner .
Este tópico mostrará como executar cada um desses procedimentos. As tarefas e instruções passo a passo neste tópico pressupõem que você esteja começando com uma instância padrão do SQL Server 2008 R2 em execução no Windows Server 2008 R2. Antes de continuar, certifique-se de que:
- O Windows Server 2008 R2 Service Pack 1 e todas as atualizações disponíveis estão instalados.
- O servidor está ingressado no domínio.
- O servidor tem um endereço IP estático.
- O SQL Server 2008 R2 Service Pack 1 e todas as atualizações disponíveis estão instalados.
A instância do SQL Server só precisa incluir a função Serviços do Mecanismo de Banco de Dados, que é incluída automaticamente em qualquer instalação do SQL Server. No entanto, para facilitar a configuração e a manutenção, recomendamos que você inclua as funções de servidor Ferramentas de Gerenciamento – Básico e Ferramentas de Gerenciamento – Completas .
Observação
Para obter mais informações sobre como ingressar computadores em um domínio, consulte Ingressando computadores no domínio e fazendo logon. Para obter mais informações sobre como configurar endereços IP estáticos, consulte Configurar um endereço IP estático. Para obter mais informações sobre como instalar o SQL Server, consulte Instalando o SQL Server 2008 R2.
Habilitar o acesso remoto ao SQL Server
O SQL Server usa TCP/IP para se comunicar com computadores remotos. Se o servidor de banco de dados e o servidor Web estiverem em máquinas diferentes, você precisará:
- Defina as configurações de rede do SQL Server para permitir a comunicação por TCP/IP.
- Configure todos os firewalls de hardware ou software para permitir o tráfego TCP (e, em alguns casos, o tráfego UDP (User Datagram Protocol)) nas portas que a instância do SQL Server usa.
Para permitir que o SQL Server se comunique por TCP/IP, use o SQL Server Configuration Manager para alterar a configuração de rede da instância do SQL Server.
Para permitir que o SQL Server se comunique usando TCP/IP
No menu Iniciar, aponte para Todos os Programas, clique em Microsoft SQL Server 2008 R2, clique em Ferramentas de Configuração e clique em SQL Server Configuration Manager.
No painel de exibição de árvore, expanda Configuração de Rede do SQL Server e clique em Protocolos para MSSQLSERVER.
Observação
Se você instalou várias instâncias do SQL Server, verá um item Protocolos para [nome da instância] para cada instância. Você precisa definir as configurações de rede instância por instância.
No painel de detalhes, clique com o botão direito do mouse na linha TCP/IP e clique em Habilitar.
Na caixa de diálogo Aviso, clique em OK.
Você precisa reiniciar o serviço MSSQLSERVER antes que sua nova configuração de rede entre em vigor. Você pode fazer isso em um prompt de comando, no console de Serviços ou no SQL Server Management Studio. Neste procedimento, você usará o SQL Server Management Studio.
Feche o SQL Server Configuration Manager.
No menu Iniciar, aponte para Todos os Programas, clique em Microsoft SQL Server 2008 R2 e clique em SQL Server Management Studio.
Na caixa de diálogo Conectar ao Servidor, na caixa Nome do servidor, digite o nome do servidor de banco de dados e clique em Conectar.
No painel Pesquisador de Objetos, clique com o botão direito do mouse no nó do servidor pai (por exemplo, TESTDB1) e clique em Reiniciar.
Na caixa de diálogo Microsoft SQL Server Management Studio , clique em Sim.
Quando o serviço for reiniciado, feche o SQL Server Management Studio.
Para permitir o tráfego do SQL Server por meio de um firewall, primeiro você precisa saber quais portas sua instância do SQL Server está usando. Isso dependerá de como a instância do SQL Server foi criada e configurada:
- Uma instância padrão do SQL Server escuta (e responde) solicitações na porta TCP 1433.
- Uma instância nomeada do SQL Server escuta (e responde) solicitações em uma porta TCP atribuída dinamicamente.
- Se o serviço Navegador do SQL Server estiver habilitado, os clientes poderão consultar o serviço na porta UDP 1434 para descobrir qual porta TCP usar para uma instância específica do SQL Server. No entanto, esse serviço geralmente é desativado por motivos de segurança.
Supondo que você esteja usando uma instância padrão do SQL Server, você precisa configurar seu firewall para permitir o tráfego.
Direção | Do Porto | Para bombordo | Tipo de porta |
---|---|---|---|
Entrada | Qualquer | 1433 | TCP |
Saída | 1433 | Qualquer | TCP |
Observação
Tecnicamente, um computador cliente usará uma porta TCP atribuída aleatoriamente entre 1024 e 5000 para se comunicar com o SQL Server, e você pode restringir suas regras de firewall de acordo. Para obter mais informações sobre portas e firewalls do SQL Server, consulte Números de porta TCP/IP necessários para se comunicar com o SQL por meio de um firewall e Como configurar um servidor para escutar em uma porta TCP específica (SQL Server Configuration Manager).
Na maioria dos ambientes do Windows Server, você provavelmente terá que configurar o Firewall do Windows no servidor de banco de dados. Por padrão, o Firewall do Windows permite todo o tráfego de saída, a menos que uma regra o proíba especificamente. Para permitir que o servidor Web acesse o banco de dados, você precisa configurar uma regra de entrada que permita o tráfego TCP no número da porta que a instância do SQL Server usa. Se você estiver usando uma instância padrão do SQL Server, poderá usar o próximo procedimento para configurar essa regra.
Para configurar o Firewall do Windows para permitir a comunicação com uma instância padrão do SQL Server
No servidor de banco de dados, no menu Iniciar , aponte para Ferramentas Administrativas e clique em Firewall do Windows com Segurança Avançada.
No painel de exibição de árvore, clique em Regras de Entrada.
No painel Ações, em Regras de Entrada, clique em Nova Regra.
No Assistente de Nova Regra de Entrada, na página Tipo de Regra, selecione Porta e clique em Avançar.
Na página Protocolo e Portas, verifique se o TCP está selecionado e, na caixa Portas locais específicas, digite 1433 e clique em Avançar.
Na página Ação, deixe Permitir a conexão selecionado e clique em Avançar.
Na página Perfil , deixe Domínio selecionado, desmarque as caixas de seleção Privado e Público e clique em Avançar.
Na página Nome , dê à regra um nome adequadamente descritivo (por exemplo, instância padrão do SQL Server – acesso à rede) e clique em Concluir.
Para obter mais informações sobre como configurar o Firewall do Windows para SQL Server, especialmente se você precisar se comunicar com o SQL Server por meio de portas não padrão ou dinâmicas, consulte Como configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados.
Configurar logons e permissões de banco de dados
Quando você implanta um aplicativo Web no IIS (Serviços de Informações da Internet), o aplicativo é executado usando a identidade do pool de aplicativos. Em um ambiente de domínio, as identidades do pool de aplicativos usam a conta de computador do servidor no qual são executadas para acessar recursos de rede. As contas de máquina assumem a forma [nome de domínio]</strong>[nome da máquina]$, por exemplo, FABRIKAM\TESTWEB1$. Para permitir que seu aplicativo Web acesse um banco de dados na rede, você precisa:
- Adicione um logon para a conta de computador do servidor Web à instância do SQL Server.
- Mapeie o logon da conta do computador para todas as funções de banco de dados necessárias (normalmente db_datareader e db_datawriter).
Se o aplicativo Web estiver em execução em um farm de servidores, em vez de em um único servidor, você precisará repetir esses procedimentos para cada servidor Web no farm de servidores.
Observação
Para obter mais informações sobre identidades de pool de aplicativos e acesso a recursos de rede, consulte Identidades de pool de aplicativos.
Você pode abordar essas tarefas de várias maneiras. Para criar o login, você pode:
- Crie o logon manualmente no servidor de banco de dados, usando o Transact-SQL ou o SQL Server Management Studio.
- Use um projeto de servidor do SQL Server 2008 no Visual Studio para criar e implantar o logon.
Um logon do SQL Server é um objeto no nível do servidor, em vez de um objeto no nível do banco de dados, portanto, não depende do banco de dados que você deseja implantar. Dessa forma, você pode criar o logon a qualquer momento, e a abordagem mais fácil geralmente é criar o logon manualmente no servidor de banco de dados antes de começar a implantar bancos de dados. Você pode usar o próximo procedimento para criar um logon no SQL Server Management Studio.
Para criar um logon do SQL Server para a conta do computador do servidor Web
No servidor de banco de dados, no menu Iniciar , aponte para Todos os Programas, clique em Microsoft SQL Server 2008 R2 e clique em SQL Server Management Studio.
Na caixa de diálogo Conectar ao Servidor, na caixa Nome do servidor, digite o nome do servidor de banco de dados e clique em Conectar.
No painel Pesquisador de Objetos, clique com o botão direito do mouse em Segurança, aponte para Novo e clique em Logon.
Na caixa de diálogo Logon – Novo, na caixa Nome de logon, digite o nome da sua conta de computador do servidor Web (por exemplo, FABRIKAM\TESTWEB1$).
Clique em OK.
Neste ponto, o servidor de banco de dados está pronto para a publicação da Implantação da Web. No entanto, todas as soluções implantadas não funcionarão até que você mapeie o logon da conta do computador para as funções de banco de dados necessárias. Mapear o logon para funções de banco de dados requer muito mais reflexão, pois você não pode mapear funções até depois de implantar o banco de dados. Para mapear o logon da conta da máquina para as funções de banco de dados necessárias, você pode:
- Atribua as funções de banco de dados ao logon manualmente, depois de implantar o banco de dados pela primeira vez.
- Use um script pós-implantação para atribuir as funções de banco de dados ao logon.
Para obter mais informações sobre como automatizar a criação de logons e mapeamentos de função de banco de dados, consulte Implantando associações de função de banco de dados em ambientes de teste. Como alternativa, você pode usar o próximo procedimento para mapear manualmente o logon da conta da máquina para as funções de banco de dados necessárias. Lembre-se de que você não pode executar esse procedimento até depois de implantar o banco de dados.
Para mapear funções de banco de dados para o login da conta da máquina do servidor Web
Abra o SQL Server Management Studio como antes.
No painel Pesquisador de Objetos, expanda o nó Segurança, expanda o nó Logons e clique duas vezes no logon da conta do computador (por exemplo, FABRIKAM\TESTWEB1$).
Na caixa de diálogo Propriedades de Logon, clique em Mapeamento de Usuário.
Na tabela Usuários mapeados para este login, selecione o nome do banco de dados (por exemplo, ContactManager).
Na lista Associação de função de banco de dados para: [nome do banco de dados], selecione as permissões necessárias. No caso da solução de exemplo do Contact Manager, você deve selecionar as funções db_datareader e db_datawriter .
Clique em OK.
Embora o mapeamento manual de funções de banco de dados geralmente seja mais do que adequado para ambientes de teste, é menos desejável para implantações automatizadas ou com um clique em ambientes de preparo ou produção. Você pode encontrar mais informações sobre como automatizar esse tipo de tarefa usando scripts pós-implantação em Implantando associações de função de banco de dados em ambientes de teste.
Observação
Para obter mais informações sobre projetos de servidor e projetos de banco de dados, consulte Projetos de banco de dados do SQL Server do Visual Studio 2010.
Configurar permissões para a conta de implantação
Se a conta que você usará para executar a implantação não for um administrador do SQL Server, você também precisará criar um logon para essa conta. Para criar o banco de dados, a conta deve ser membro da função de servidor dbcreator ou ter permissões equivalentes.
Observação
Ao usar a Implantação da Web ou o VSDBCMD para implantar um banco de dados, você pode usar credenciais do Windows ou credenciais do SQL Server (se sua instância do SQL Server estiver configurada para dar suporte à autenticação de modo misto). O próximo procedimento pressupõe que você deseja usar credenciais do Windows, mas não há nada que o impeça de especificar um nome de usuário e uma senha do SQL Server em sua cadeia de conexão ao configurar a implantação.
Para configurar permissões para a conta de implantação
Abra o SQL Server Management Studio como antes.
No painel Pesquisador de Objetos, clique com o botão direito do mouse em Segurança, aponte para Novo e clique em Logon.
Na caixa de diálogo Logon – Novo, na caixa Nome de logon, digite o nome da sua conta de implantação (por exemplo, FABRIKAM\matt).
No painel Selecionar uma página, clique em Funções de Servidor.
Selecione dbcreator e clique em OK.
Para dar suporte a implantações subsequentes, você também precisará adicionar a conta de implantação à função db_owner no banco de dados após a primeira implantação. Isso ocorre porque, em implantações subsequentes, você está modificando o esquema de um banco de dados existente, em vez de criar um novo banco de dados. Conforme descrito na seção anterior, você não pode adicionar um usuário a uma função de banco de dados até criar o banco de dados, por motivos óbvios.
Para mapear o logon da conta de implantação para a função de banco de dados db_owner
Abra o SQL Server Management Studio como antes.
Na janela Pesquisador de Objetos, expanda o nó Segurança, expanda o nó Logons e clique duas vezes no logon da conta do computador (por exemplo, FABRIKAM\matt).
Na caixa de diálogo Propriedades de Logon, clique em Mapeamento de Usuário.
Na tabela Usuários mapeados para este login, selecione o nome do banco de dados (por exemplo, ContactManager).
Na lista Associação de função de banco de dados para: [nome do banco de dados], selecione a função db_owner.
Clique em OK.
Conclusão
Seu servidor de banco de dados agora deve estar pronto para aceitar implantações de banco de dados remoto e permitir que servidores Web IIS remotos acessem seus bancos de dados. Antes de tentar implantar e usar bancos de dados, convém verificar estes pontos-chave:
- Você configurou o SQL Server para aceitar conexões TCP/IP remotas?
- Você configurou algum firewall para permitir o tráfego do SQL Server?
- Você criou um logon de conta de computador para cada servidor Web que acessará o SQL Server?
- A implantação do banco de dados inclui um script para criar mapeamentos de função de usuário ou você precisa criá-los manualmente depois de implantar o banco de dados pela primeira vez?
- Você criou um logon para a conta de implantação e o adicionou à função de servidor dbcreator ?
Leitura Adicional
Para obter diretrizes sobre como implantar projetos de banco de dados, consulte Implantando projetos de banco de dados. Para obter diretrizes sobre como criar associações de função de banco de dados executando um script pós-implantação, consulte Implantando associações de função de banco de dados em ambientes de teste. Para obter orientação sobre como enfrentar os desafios de implantação exclusivos que os bancos de dados de associação representam, consulte Implantando bancos de dados de associação em ambientes corporativos.