Pergunta

Estou trabalhando em uma máquina local (aplicativo ASP.NET MVC 4), mas agora quero começar a usar o servidor SQL da empresa, então preciso alterar a string de conexão para me conectar a esse servidor remoto.

A configuração é a seguinte:

  • Eu tenho uma conexão VPN onde uso um endereço IP, não posso mostrar o IP exato, então digamos - xxx.xxx.xxx.xxx
  • Eu tenho nome de usuário e senha para conectar -se a VPN - VPNUserName/VPNPassword
  • Quando eu uso Microsoft SQL Server Management Studio Para conectar -se ao servidor remoto, uso o mesmo IP que uso para conectar ao VPN - xxx.xxx.xxx.xxx
  • Eu tenho nome de usuário e senha diferentes para o servidor SQL - SQLUSERNAME/SQLPASSWORD

Eu tenho uma string de conexão existente que eu uso para conectar ao servidor no meu PC, então pensei que seria suficiente para alterar os parâmetros lá como:

<add name="ProjectName.DAL.MyDbContext"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=xxx.xxx.xxx.xxx;
     Initial Catalog=DatabaseName;Integrated Security=True;         
     MultipleActiveResultSets=True;
     user id=SQLUsername;password=SQLPassword;App=EntityFramework" />

Portanto, as alterações da sequência de conexão que funcionam e me conecta ao meu servidor local são duas:

  1. Data Source= xxx.xxx.xxx.xxx - Estou usando o IP. Aqui, eu me pergunto se o próprio IP é suficiente. Devo usar http://xxx.xxx.xxx.xxx ou apenas IP está ok?
  2. user id=SQLUsername;pasword=SQLPassword - Estou usando o mesmo nome de usuário e senha que no Management studio De onde posso me conectar com sucesso ao servidor Remover, fornecendo o xxx.xxx.xxx.xxx como nome do servidor e usando SQLUSERNAME/SQLPassword em SQL Server Authentincation.

Portanto, para ser claro - no estúdio de gerenciamento, não tenho problemas para me conectar ao servidor remoto. No entanto, quando eu altero a string de conexão com o que postei acima no meu HomeController onde tenho lógica muito simples apenas para verificar se a chamada para o banco de dados é executada:

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View(db.Users.ToList());
        }

Eu recebo 3 exceções:

  1. SQLEXCECTION (0x80131904): o login falhou para o 'nome do VPNUserName' do usuário
  2. ProviderIncompatibleException: O provedor não retornou uma string proverManifestToken.
  3. ProviderIncompatibleException: ocorreu um erro ao obter informações do provedor do banco de dados. Isso pode ser causado pela estrutura da entidade usando uma string de conexão incorreta.

Então, além disso, na minha opinião, e como a exceção número 3 diz que o problema está na maneira como estou usando a string de conexão, o que me preocupa também é o Number 1 Exceção que diz que o login falhou, mas não para o meu nome SQLUSERN, mas para o nome do VPNUsern. Como eu disse - estou realmente usando a conexão VPN e uso o mesmo IP - xxx.xxx.xxx.xxx conectar -se tanto à VPN quanto ao SQL Server (do Management Studio).

Alguma ideia de como resolver isso?

Foi útil?

Solução

Remover Integrated Security=True Na sua sequência de conexão enquanto você está tentando se conectar com um nome de usuário/senha do SQL Server

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top