Pergunta sobre string de conexão do SQL Server

Pergunta sobre string de conexão do SQL Server

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,1433significa conectar-se ao servidor "ServerName" na porta 1433
  • ServerName\InstanceNamesignifica 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=dbmssocnsignifica usar tcp. Pode ser que a instância do SQL Server (veja o material da porta) não escuta no tcp

informação relacionada