Partilhar via


Construir o URL de ligação

Baixar driver JDBC

A forma geral da URL de ligação é

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

Where:

  • jdbc:sqlserver:// (Obrigatório) - É conhecido como subprotocolo e é constante.

  • Nome do servidor (Opcional) - É o endereço do servidor a que se deve ligar. Este endereço pode ser um endereço DNS ou IP, ou pode ser localhost ou 127.0.0.1 para o computador local. Se não for especificado na URL da ligação, o nome do servidor deve ser especificado na coleção de propriedades.

  • instanceName (Opcional) - É a instância a que se deve ligar em serverName. Se não for especificado, é feita uma ligação à instância padrão.

  • PortNumber (Opcional) - É a porta a que se deve ligar em serverName. A predefinição é 1433. Se estiveres a usar a porta predefinida, não tens de especificar a porta nem a anterior : no URL.

    Observação

    Para um desempenho de ligação ótimo, deve definir o portNumber quando se liga a uma instância nomeada. Isto evitará uma ida e volta ao servidor para determinar o número da porta. Se forem usados tanto a portNumber quanto a instanceName, a portNumber terá precedência e a instanceName será ignorada.

  • propriedade (Opcional) - É uma ou mais propriedades de ligação de opção. Para obter mais informações, consulte Definindo as propriedades de conexão. Qualquer propriedade da lista pode ser especificada. As propriedades só podem ser delimitadas usando o ponto e vírgula (;), e não podem ser duplicadas.

Atenção

Por razões de segurança, deve evitar construir URLs de ligação com base na entrada do utilizador. Deves especificar apenas o nome do servidor e o driver na URL. Para valores de nome de utilizador e palavra-passe, use as coleções de propriedades de ligação. Para mais informações sobre segurança nas suas aplicações JDBC, consulte Segurança das aplicações de drivers JDBC.

Propriedades de ligação

Para uma lista detalhada de propriedades que podem ser definidas na cadeia de ligação, veja Definir as propriedades de ligação.

Exemplos de ligação

Liga-te à base de dados padrão no computador local usando um nome de utilizador e palavra-passe:

jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=<password>;

Observação

Embora o exemplo anterior use um nome de utilizador e uma palavra-passe na cadeia de ligação, deves usar segurança integrada porque é mais segura. Para mais informações, consulte a secção Ligação com autenticação integrada mais adiante neste artigo.

A seguinte cadeia de ligação mostra um exemplo de como se ligar a uma base de dados SQL Server usando autenticação integrada e Kerberos a partir de uma aplicação a correr em qualquer sistema operativo suportado pelo Microsoft JDBC Driver for SQL Server:

jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
  • Ligue-se à base de dados padrão no computador local usando autenticação integrada:

    jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;

  • Ligue-se a uma base de dados nomeada num servidor remoto:

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Conecta-te à porta padrão no servidor remoto.

    jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

  • Ligue-se especificando um nome de candidatura personalizado:

    jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

Instâncias do SQL Server nomeadas e múltiplas

O SQL Server permite a instalação de múltiplas instâncias de base de dados por servidor. Cada instância é identificável por um nome específico. Para se ligar a uma instância nomeada do SQL Server, pode especificar o número de porta da instância nomeada (preferido). Também pode especificar o nome da instância como uma propriedade URL JDBC ou uma propriedade de fonte de dados . Se não for especificado o nome da instância ou a propriedade do número de porta, cria-se uma ligação à instância padrão. Veja os seguintes exemplos:

  • Para especificar um número de porta, use o seguinte formato:

    jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;

  • Para usar uma propriedade URL JDBC, utilize o seguinte formato:

    jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;

Escape de valores na URL de ligação

Pode ter de evitar certas partes dos valores da URL de ligação se os valores incluírem caracteres especiais como espaços, pontos e vírgulas e aspas. O driver JDBC permite escapar estes carateres ao envolvê-los em chaves. Por exemplo, {;} escapa de ponto e vírgula.

Antes da versão 8.4, os valores escapados podiam conter caracteres especiais (especialmente =, ;, [], e espaço), mas não podiam conter colchetes. Os valores que devem ser escapados e que contêm colchetes devem ser adicionados a uma coleção de propriedades.

Na versão 8.4 e superiores, os valores escapados podem conter caracteres especiais, incluindo colchetes. No entanto, as chaves de fechamento devem ser escapadas. Por exemplo, com uma palavra-passe de pass";{}word, uma cadeia de ligação teria de escapar da palavra-passe da seguinte forma:

jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};

Observação

O espaço em branco dentro das chavetas é literal e não é removido.

Ligação com autenticação integrada no Windows

O driver JDBC suporta o uso da autenticação integrada Tipo 2 em sistemas operativos Windows através da propriedade da integratedSecurity cadeia de ligação. Para usar autenticação integrada, copie o mssql-jdbc_auth-<version>-<arch>.dll ficheiro para um diretório no caminho do sistema Windows no computador onde o driver JDBC está instalado.

Os mssql-jdbc_auth-<version>-<arch>.dll ficheiros são instalados no seguinte local:

<installation directory>\sqljdbc_<version>\<language>\auth\

Para qualquer sistema operativo suportado pelo Microsoft JDBC Driver for SQL Server, consulte Utilização da autenticação integrada Kerberos para se ligar ao SQL Server para uma descrição de uma funcionalidade adicionada no Microsoft JDBC Driver 4.0 para SQL Server que permite a uma aplicação ligar-se a uma base de dados usando autenticação integrada com Kerberos Tipo 4.

Observação

Se estiver a correr uma Máquina Virtual Java (JVM) de 32 bits, use o mssql-jdbc_auth-<version>-<arch>.dll ficheiro na pasta x86, mesmo que o sistema operativo seja a versão x64. Se estiver a usar uma JVM de 64 bits num processador x64, use o mssql-jdbc_auth-<version>-<arch>.dll ficheiro na pasta x64.

Alternativamente, pode definir a propriedade do sistema java.library.path para especificar o diretório do mssql-jdbc_auth-<version>-<arch>.dll. Por exemplo, se o driver JDBC estiver instalado no diretório predefinido, pode especificar a localização da DLL usando o seguinte argumento de máquina virtual (VM) quando a aplicação Java é iniciada:

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86

Ligação com endereços IPv6

O driver JDBC suporta o uso de endereços IPv6 com a coleção de propriedades de conexão e com a serverName propriedade de string de conexão. O valor inicial serverName , como jdbc:sqlserver://serverName, não é suportado para endereços IPv6 em cadeias de ligação. Usar um nome para serverName em vez de um endereço IPv6 bruto funciona em todos os casos na ligação. Os exemplos seguintes fornecem mais informações.

  • Para usar a propriedade serverName:

    jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;

  • Para usar a coleção de propriedades:

    Properties pro = new Properties();

    pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

    Connection con = DriverManager.getConnection("jdbc:sqlserver://;encrypt=true;integratedSecurity=true;", pro);