web-dev-qa-db-fra.com

chaîne de connexion jTDS: connexion à une instance MS SQL Server avec une barre oblique inverse

J'utilise le pilote jTDS dans une application Java. L'administrateur de base de données m'a dit que le nom d'instance SQL Server est

MSSQL-DB09v1\v1

Comment dois-je écrire l'URL de connexion?

J'ai utilisé quelque chose comme 

jdbc:jtds:sqlserver://server-name/database_name 

pendant un certain temps et cela fonctionne bien, mais vous ne connaissez pas la bonne chaîne de connexion lorsque le nom de l'instance contient une barre oblique inversée.

11
curious1

A fait des recherches et des tests. La chaîne d'URL de connexion correcte a été trouvée dans ce cas:

jdbc:jtds:sqlserver://server-name/database_name;instance=instance_name

Dans mon cas, la chaîne de connexion est:

jdbc:jtds:sqlserver://server-name/MSSQL-DB09v1;instance=v1

Voir jTDSFAQs pour plus de détails

24
curious1

J'ai eu un cas similaire où mon DBA m'a donné une base de données sur un serveur avec la connexion suivante: {SERVER_NAME}\{INSTANCE}. Cette syntaxe fonctionnait lors de la connexion au serveur et à l'instance à l'aide de SSMS, mais ne fonctionnait pas lors de la connexion via le pilote Java.

Au lieu de cela, la syntaxe suivante a fonctionné pour moi:

jdbc:jtds:sqlserver://{SERVER_NAME};databaseName={DATABASE_NAME);instance={INSTANCE}

Notez que je devais déplacer l'instance vers un paramètre de chaîne de connexion. Une fois que j'ai fait cela, tout a bien fonctionné.

Pour référence, voir ce JTDS spécifique FAQ .

5
Pflugs

-Votre base de données serait en cours d'exécution sur un schéma "dbo".

-Alors, vous devez vous assurer que vous établissez une connexion pour répondre à une requête de manière à ce que le schéma dbo traite votre requête (lorsque vous utilisez la fonction getConnection ())

-Vous pouvez le faire en ajoutant le nom de votre base de données devant le nom du serveur dans la chaîne de connexion. comme ci-dessous

ConnectionUrl="jdbc:jtds:sqlserver://**yourservername:1433/yourdatabase**;database=yourdatabse;user=username;password=password;encrypt=false;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

au lieu de

ConnectionUrl="jdbc:jtds:sqlserver://**yourservername:1433**;database=yourdatabse;user=username;password=password;encrypt=false;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

0
sharat kanthi