在jdbc连接字符串中设置实例名称没有影响

时间:2013-11-20 22:57:01

标签: java sql-server jdbc workbench

我正在尝试通过Workbench / J连接到SQL Server 2005。我为jdbc字符串正确输入了所有内容,我可以连接到所需的服务器。但是,我必须为具有数据库名称的表键入完全限定名称。我不想那样做。我将我的instanceName设置为数据库,但它对我不起作用。

有没有办法连接数据库而不仅仅是服务器?

jdbc:sqlserver://serverName[\instanceName][:portNumber]

3 个答案:

答案 0 :(得分:6)

如果要连接到实例,则需要做两件事:

  1. 确保SQL Server Browser服务正在SQL Server主机上运行(默认情况下已禁用IIRC)
  2. 如果要按实例名称连接,请在连接字符串中包含portnumber。当连接字符串包含portnumber(每个实例都有自己的端口号)时,JDBC驱动程序将忽略实例名称。
  3. 关于第二项,documentation说:

      

    为获得最佳连接性能,应在连接到命名实例时设置portNumber。这将避免往返服务器以确定端口号。如果同时使用portNumberinstanceName,则portNumber优先,instanceName将被忽略。

    实例名称与数据库名称相同。您可以使用连接属性databaseName指定数据库名称,例如:

    jdbc:sqlserver://localhost;databaseName=AdventureWorks
    

答案 1 :(得分:3)

我认为您应该可以连接到这样的特定数据库:

jdbc:sqlserver://serverName[\instanceName][:portNumber];databaseName=MyDatabase

答案 2 :(得分:3)

Microsoft SQL Server支持在同一台计算机上进行多次安装。每次安装(“虚拟”SQL Server,如果您愿意)都由其“实例名称”标识。因此,我们可以在同一台计算机上有两个单独的“SQL Server”,例如,一个名为\PRODUCTION的实例用于生产数据库,另一个实例名为\TEST用于测试环境。每个实例都独立运作。

SQL Server Express Edition的默认安装会创建名为\SQLEXPRESS的SQL Server实例。其他版本的SQL Server通常会创建一个“默认实例”(有时标识为\)。

每个SQL Server实例都可以包含多个数据库。您可以为此设置连接的默认数据库:

jdbc:sqlserver://myservername;database=myDb

jdbc:sqlserver://myservername;instanceName=instance1;database=myDb