jTDS连接字符串:使用反斜杠连接到MS SQL Server实例

12

我正在Java应用程序中使用jTDS驱动程序。数据库管理员告诉我SQL Server实例名称为

MSSQL-DB09v1\v1

我该如何编写连接URL?

我一直在使用类似于

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

已经使用了一段时间,效果不错,但是在实例名称包含反斜杠时不知道正确的连接字符串。

3个回答

28

进行了进一步的研究和测试。发现在这种情况下正确的连接URL字符串是:

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

在我的情况下,连接字符串为:

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

请参阅jTDS FAQs以获取更多详细信息。


1
我已经做了,谢谢。在我的情况下,主机名是这样的MSSQL-DB09v1\v1,有反斜杠。在Java中转义它并没有起作用。 - thirdy

5

我曾遇到过一个类似的情况,我的数据库管理员在一台服务器上给我提供了一个带有以下连接的数据库:{SERVER_NAME}\{INSTANCE}。当使用SSMS连接服务器和实例时,该语法有效,但是通过Java驱动程序连接时却无法工作。

相反,对我起作用的是以下语法:

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

请注意,我必须将实例移到连接字符串参数中。这样做后,一切都运行良好。

有关参考,请参见特定的JTDS FAQ


0

-你的数据库将运行在“dbo”模式下。

-因此,您需要确保建立连接以便以dbo模式处理查询。(当您使用getConnection()函数时)

-您可以通过在连接字符串中在服务器名称前添加数据库名称来实现这一点。如下所示:

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

替代

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接