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 da 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 (Implantação da Web) do IIS, 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 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 produtos ou ferramentas adicionais para configurar um servidor de banco de dados para dar suporte à implantação da Web. Supondo que o servidor de banco de dados e o servidor Web sejam executados em computadores diferentes, você simplesmente precisará:

  • Permitir que SQL Server se comuniquem usando TCP/IP.
  • Permitir SQL Server tráfego por meio de firewalls.
  • Dê à conta do computador do servidor Web um logon SQL Server.
  • Mapeie o logon da conta do computador para todas as funções de banco de dados necessárias.
  • Dê à conta que executará a implantação uma SQL Server permissões de logon e 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ê está começando com uma instância padrão do SQL Server 2008 R2 em execução no Windows Server 2008 R2. Antes de continuar, verifique se:

  • O Windows Server 2008 R2 Service Pack 1 e todas as atualizações disponíveis estão instalados.
  • O servidor é ingressado no domínio.
  • O servidor tem um endereço IP estático.
  • SQL Server 2008 R2 Service Pack 1 e todas as atualizações disponíveis estão instaladas.

A instância SQL Server só precisa incluir a função Serviços do Mecanismo de Banco de Dados, que é incluída automaticamente em qualquer instalação SQL Server. No entanto, para facilitar a configuração e a manutenção, recomendamos que você inclua as Ferramentas de Gerenciamento – Ferramentas Básicas e de Gerenciamento – Funções de servidor completas .

Observação

Para obter mais informações sobre como ingressar computadores em um domínio, confira Como ingressar computadores no domínio e fazer 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 SQL Server, consulte Instalando SQL Server 2008 R2.

Habilitar o Acesso Remoto para SQL Server

SQL Server usa TCP/IP para se comunicar com computadores remotos. Se o servidor de banco de dados e o servidor Web estiverem em computadores diferentes, você precisará:

  • Defina SQL Server configurações de rede para permitir a comunicação por TCP/IP.
  • Configure quaisquer firewalls de hardware ou software para permitir tráfego TCP (e, em alguns casos, tráfego UDP (Protocolo de Datagrama do Usuário) nas portas que a instância do SQL Server usa.

Para permitir que SQL Server se comuniquem por TCP/IP, use SQL Server Configuration Manager para alterar a configuração de rede para sua instância de SQL Server.

Para habilitar SQL Server se comunicar usando TCP/IP

  1. 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.

  2. No painel de exibição de árvore, expanda SQL Server Configuração de Rede e clique em Protocolos para MSSQLSERVER.

    Observação

    Se você instalou várias instâncias de SQL Server, verá um item Protocolos para[nome da instância] para cada instância. Você precisa definir as configurações de rede em uma base instância por instância.

  3. No painel de detalhes, clique com o botão direito do mouse na linha TCP/IP e clique em Habilitar.

    No painel de detalhes, clique com o botão direito do mouse na linha TCP/IP e clique em Habilitar

  4. Na caixa de diálogo Aviso, clique em OK.

    Na caixa de diálogo Aviso, clique em OK

  5. 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 em SQL Server Management Studio. Neste procedimento, você usará SQL Server Management Studio.

  6. Feche o SQL Server Configuration Manager.

  7. No menu Iniciar, aponte para Todos os Programas, clique em Microsoft SQL Server 2008 R2 e clique em SQL Server Management Studio.

  8. 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.

    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.

  9. 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.

    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.

  10. Na caixa de diálogo Microsoft SQL Server Management Studio, clique em Sim.

    Na caixa de diálogo Microsoft SQL Server Management Studio, clique em Sim.

  11. Quando o serviço for reiniciado, feche SQL Server Management Studio.

Para permitir SQL Server tráfego por meio de um firewall, primeiro você precisa saber quais portas sua instância de SQL Server está usando. Isso dependerá de como a instância SQL Server foi criada e configurada:

  • Uma instância padrão de SQL Server escuta (e responde a) solicitações na porta TCP 1433.
  • Uma instância nomeada de SQL Server escuta (e responde a) solicitações em uma porta TCP atribuída dinamicamente.
  • Se o serviço SQL Server Browser estiver habilitado, os clientes poderão consultar o serviço na porta UDP 1434 para descobrir qual porta TCP usar para uma instância de SQL Server específica. No entanto, esse serviço geralmente é desabilitado por motivos de segurança.

Supondo que você esteja usando uma instância padrão do SQL Server, será necessário configurar o firewall para permitir o tráfego.

Direção Da porta Para Porta 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 SQL Server e você poderá restringir suas regras de firewall adequadamente. Para obter mais informações sobre SQL Server portas e firewalls, 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 seu 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 de 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 de SQL Server padrão

  1. No servidor de banco de dados, no menu Iniciar, aponte para Ferramentas Administrativas e clique em Firewall do Windows com Segurança Avançada.

  2. No painel de exibição de árvore, clique em Regras de Entrada.

    No painel de exibição de árvore, clique em Regras de Entrada.

  3. No painel Ações , em Regras de Entrada, clique em Nova Regra.

  4. No Assistente para Nova Regra de Entrada, na página Tipo de Regra , selecione Porta e clique em Avançar.

    No Assistente para Nova Regra de Entrada, na página Tipo de Regra, selecione Porta e clique em Avançar.

  5. 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 Protocolo e Portas, verifique se o TCP está selecionado e, na caixa Portas locais específicas, digite 1433 e clique em Avançar.

  6. Na página Ação , deixe Permitir a conexão selecionada e clique em Avançar.

  7. Na página Perfil, deixe Domínio selecionado, desmarque as caixas Marcar Privado e Público e clique em Avançar.

    Na página Perfil, deixe Domínio selecionado, desmarque as caixas marcar Privado e Público e clique em Avançar.

  8. Na página Nome, dê à regra um nome adequadamente descritivo (por exemplo, SQL Server instância padrão – 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 SQL Server em 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 nos Serviços de Informações da Internet (IIS), 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 do computador do servidor no qual são executadas para acessar recursos de rede. As contas de computador assumem o formulário [nome de domínio]</strong>[nome do computador]$— por exemplo, FABRIKAM\TESTWEB1$. Para permitir que seu aplicativo Web acesse um banco de dados pela rede, você precisa:

  • Adicione um logon para a conta do 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 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 do pool de aplicativos e como acessar recursos de rede, consulte Identidades do pool de aplicativos.

Você pode abordar essas tarefas de várias maneiras. Para criar o logon, você pode:

  • Crie o logon manualmente no servidor de banco de dados usando Transact-SQL ou SQL Server Management Studio.
  • Use um projeto de servidor SQL Server 2008 no Visual Studio para criar e implantar o logon.

Um logon SQL Server é um objeto no nível do servidor, em vez de um objeto no nível do banco de dados, portanto, ele 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 SQL Server para a conta do computador do servidor Web

  1. 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.

  2. 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.

    Esta imagem ilustra: 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.

  3. No painel Pesquisador de Objetos, clique com o botão direito do mouse em Segurança, aponte para Novoe clique em Logon.

  4. Na caixa de diálogo Logon – Novo , na caixa Nome do logon, digite o nome da sua conta de computador do servidor Web (por exemplo, FABRIKAM\TESTWEB1$).

    Na caixa de diálogo Logon – Novo, na caixa Nome do logon, digite o nome da sua conta de computador do servidor Web (por exemplo, FABRIKAM\TESTWEB1$).

  5. Clique em OK.

Neste ponto, o servidor de banco de dados está pronto para 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 pensamento, pois você não pode mapear funções até que você tenha implantado o banco de dados. Para mapear o logon da conta do computador 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 o logon da conta do computador para as funções de banco de dados necessárias manualmente. Lembre-se de que você não poderá executar esse procedimento até que tenha implantado o banco de dados.

Para mapear funções de banco de dados para o logon da conta do computador do servidor Web

  1. Abra SQL Server Management Studio como antes.

  2. 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$).

    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$).

  3. Na caixa de diálogo Propriedades de Logon , clique em Mapeamento de Usuário.

  4. Na tabela Usuários mapeados para esta tabela de logon , selecione o nome do banco de dados (por exemplo, ContactManager).

  5. 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 Gerenciador de Contatos, você deve selecionar as funções db_datareader e db_datawriter .

    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 Gerenciador de Contatos, você deve selecionar as funções db_datareader e db_datawriter.

  6. Clique em OK.

Embora o mapeamento manual de funções de banco de dados seja geralmente mais do que adequado para ambientes de teste, é menos desejável para implantações automatizadas ou de 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 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 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 de SQL Server (se sua instância de 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 impeça você de especificar um nome de usuário e senha SQL Server na cadeia de conexão ao configurar a implantação.

Para configurar permissões para a conta de implantação

  1. Abra SQL Server Management Studio como antes.

  2. No painel Pesquisador de Objetos, clique com o botão direito do mouse em Segurança, aponte para Novoe clique em Logon.

  3. Na caixa de diálogo Logon – Novo , na caixa Nome do logon, digite o nome da sua conta de implantação (por exemplo, FABRIKAM\matt).

  4. No painel Selecionar uma página , clique em Funções de Servidor.

  5. Selecione dbcreator e clique em OK.

    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

  1. Abra SQL Server Management Studio como antes.

  2. 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).

  3. Na caixa de diálogo Propriedades de Logon , clique em Mapeamento de Usuário.

  4. Na tabela Usuários mapeados para esta tabela de logon , selecione o nome do banco de dados (por exemplo, ContactManager).

  5. Na lista Associação de função de banco de dados para:[nome do banco de dados] , selecione a função db_owner .

    Na lista Associação de função de banco de dados para: [nome do banco de dados], selecione a função db_owner.

  6. Clique em OK.

Conclusão

Seu servidor de banco de dados agora deve estar pronto para aceitar implantações remotas de banco de dados e permitir que servidores Web remotos do IIS acessem seus bancos de dados. Antes de tentar implantar e usar bancos de dados, convém marcar estes pontos-chave:

  • Você configurou SQL Server para aceitar conexões TCP/IP remotas?
  • Você configurou firewalls para permitir SQL Server tráfego?
  • Você criou um logon de conta de computador para cada servidor Web que acessará SQL Server?
  • Sua implantação de 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 diretrizes sobre como atender aos 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.