Como especificar um número de porta na cadeia de conexão do SQL Server?

139

Eu uso a seguinte cadeia de conexão no SQL Server Management Studio. Falha ao conectar:

mycomputer.test.xxx.com:1234\myInstance1

Mas o seguinte está ok:

mycomputer.test.xxx.com\myInstance1

Então, como faço para especificar um número de porta em uma cadeia de conexão?

smwikipedia
fonte
2
Relacionado a stackoverflow.com/q/89576
binki

Respostas:

260

Use uma vírgula para especificar um número de porta com o SQL Server:

mycomputer.test.xxx.com,1234

Não é necessário especificar um nome de instância ao especificar a porta.

Muitos outros exemplos em http://www.connectionstrings.com/ . Isso me salvou algumas vezes.

Michael Petrotta
fonte
6
Cada instância deve estar em uma porta separada, portanto port = instance no servidor Sql. Eu nunca conheci esse "porto" até agora - obrigado.
Daniel Williams
1
@ Daniel: sim, você precisa especificar porta ou instância.
precisa
8
Nota: o nome da instância é ignorado quando a porta é especificada. Portanto, "mycomputer.test.xxx.com \ AnyOldRubbish, 1234" ainda funciona.
gbn 14/03
69
Eu perdi quase um dia inteiro tentando descobrir isso. Alguém na Microsoft deve ser baleado por isso. Eles não apenas se encarregam de criar uma convenção totalmente nova para delimitar um endereço de porta (eles não podem usar apenas dois pontos como o resto do mundo), mas não se incomodam em fazer um teste no SQL Server Management Studio para que você tenha algum tipo de dica sobre o que está acontecendo.
PrgTrdr
1
Como isso funciona se a instância padrão (MSSQLSERVER) não estiver em execução no 1433?
Mark Richman
12

Para o JDBC, o formato adequado é um pouco diferente e da seguinte maneira:

jdbc:microsoft:sqlserver://mycomputer.test.xxx.com:49843

Observe os dois pontos em vez da vírgula.

Shane
fonte
1
Eu mudei de C # para Java, e essa resposta me salva. Novamente.
smwikipedia
1
Incrível, feliz por ter ajudado. Documentação não exatamente intuitiva em Java para a cadeia de conexão JDBC. Também não sei por que é diferente, o que é irritante.
21715 Shane
1

A cadeia de conexão SQL correta para SQL com porta especificada é usar vírgula entre o endereço IP e o número da porta como o seguinte padrão: xxx.xxx.xxx.xxx, aaaa

David Thang
fonte
-2

No próprio nome do servidor, você pode adicionar o número da porta como este

Server="servername:XXXXX"

Substitua XXXXX pelo número da porta.

Sua cadeia de conexão seria semelhante à abaixo

<connectionStrings>
    <add name="ConnectionStringSQL" 
         connectionString="server=servername:XXXXX;database=databasename;uid=XXX;pwd=XXXXXXX"
         providerName="System.Data.SqlClient" />
</connectionStrings>
GMB
fonte
4
C # usa uma vírgula entre o nome do servidor e o número da porta, não dois pontos.
Dymas