Estou tentando me conectar a uma instância SQL nomeada no servidor. Já existe uma instância padrão do SQL Server 2005 e uma recém-nomeada - SQL Server 2008. Estou usando a propriedade "Biblioteca de rede" para usar a conexão TCP, mas por algum motivo, ele tenta conectar a instância padrão e omite um erro sobre erro de login.
Se eu remover a propriedade da biblioteca de rede, a conexão também será estabelecida sem nenhum erro.
Estou usando a autenticação do Windows e tenho todas as permissões necessárias.
A string de conexão problemática:
Fonte de dados=ServerName\InstanceName,1433;biblioteca de rede=dbmssocn;Catálogo inicial=MyDataBaseName;Segurança integrada=SSPI
A string de conexão funcional:
Fonte de dados=ServerName\InstanceName;Catálogo inicial=MyDataBaseName;Segurança integrada=SSPI
Gostaria de entender o porquê, por favor. Desde já, obrigado,
Tamir
Responder1
As cadeias de conexão têm 2 diferenças, então tentarei responder por isso ...
- As instâncias nomeadas não escutam na porta 1433 (apenas a instância padrão por, er, padrão)
- O nome da instância é ignorado quando a porta é especificada
Então:
ServerName\InstanceName,1433
significa conectar-se ao servidor "ServerName" na porta 1433ServerName\InstanceName
significa conectar-se ao servidor "ServerName" e resolver o nome da instância para a porta correta (a resolução usa a porta 1434 UDP)
No entanto, network library=dbmssocn
significa usar tcp. Pode ser que a instância do SQL Server (veja o material da porta) não escuta no tcp