Estou perplexo. Eu tenho um site de cliente em um servidor virtual privado - Windows Server 2008 SP2, IIS7, SQL Server 2008 Express.
Estou tentando configurar um segundo aplicativo da Web para permitir que ele revise as atualizações antes de sua ativação. Eu criei o aplicativo da Web no IIS7 e adicionei um segundo banco de dados ao SQL Server. O segundo banco de dados é essencialmente uma cópia do banco de dados de produção, com 'DEV' prefixado ao nome do banco de dados e alguns novos campos em algumas tabelas.
Meu site de produção funciona bem. No entanto, o site de teste retorna com um SqlException: "Invalid column name 'version'." Este é um dos novos campos - o que me leva a acreditar que o meu site dev está se referindo ao banco de dados de produção, e não ao banco de dados de desenvolvimento. Strings de conexão, no entanto, apontam para bancos de dados diferentes (embora o login seja o mesmo para ambos):
- Site de produção: "Servidor =. \ SQLExpress; Banco de dados = myDbName; ID do usuário = myUserName; Senha = myUserPassword;"
- Site de desenvolvimento: "Servidor =. \ SQLExpress; Banco de dados = DEVmyDbName; ID do usuário = myUserName; Senha = myUserPassword;"
Parece que isso deve ser algo óbvio que estou perdendo. Um colega sugeriu que eu criasse outro pool de aplicativos para o segundo aplicativo do IIS, mas parece que não ajudou.
UPDATE, após mais testes:
Eu mudei a string de conexão do site dev para
"Server=.\SQLExpress;Database=DEVmyDbName;User ID=devuser;Password=myNewDifferentPassword;"
e criou um novo login do servidor SQL no banco de dados, e apenas deu acesso ao banco de dados dev. Eu também defino o banco de dados dev como o banco de dados padrão da conta. Eu removi o acesso ao banco de dados de desenvolvimento do login de produção. Quando tento acessar o site, recebo o seguinte erro:
- O principal "devuser" do servidor não pode acessar o banco de dados "myDbName" no contexto de segurança atual.
Como resultado, há duas coisas que eu tenho certeza:
- Como está usando o novo nome de usuário para fazer login, sei que o aplicativo está usando a string de conexão que estou alimentando;
- Por algum motivo, uma vez logado, parece estar ignorando o banco de dados especificado e tentando usar o banco de dados de produção.
Ainda perplexo.