13

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

MSSQL-DB09v1\v1

我应该如何编写连接 URL?

我一直在使用类似的东西

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

一段时间,它运行良好,但当实例名称包含反斜杠时不知道正确的连接字符串。

4

3 回答 3

28

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

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

就我而言,连接字符串是:

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

有关详细信息,请参阅jTDS 常见问题解答

于 2013-10-24T21:37:24.567 回答
5

我有一个类似的案例,我的 DBA 给了我一个服务器上的数据库,连接如下:{SERVER_NAME}\{INSTANCE}. 该语法在使用 SSMS 连接到服务器和实例时有效,但在通过 Java 驱动程序连接时无效。

相反,以下语法对我有用:

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

请注意,我必须将实例移动到连接字符串参数。一旦我这样做了,一切都很好。

如需参考,请参阅此特定 JTDS 常见问题解答

于 2015-11-18T19:42:37.810 回答
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;";

于 2018-10-10T17:04:46.007 回答