通过 servername\instancename 的 sql server express 连接

Posted

技术标签:

【中文标题】通过 servername\\instancename 的 sql server express 连接【英文标题】:sqlserver express connection over servername\instancename通过 servername\instancename 的 sql server express 连接 【发布时间】:2014-04-03 19:24:03 【问题描述】:

我尝试连接到我的本地 sqlserver express 2008 R2。

当我将服务器名称指定为 127.0.0.1 时,例如

String url = "jdbc:sqlserver://127.0.0.1;databaseName=mydatabase;";

我可以连接。

但是当我将 servername\named 实例写为服务器名称时

String url = "jdbc:sqlserver://machinename//instancename;databaseName=mydatabase;";

然后我无法连接到服务器。

配置: 我设置启用 tcp/ip 连接。我在 ipall 部分将 tcp 动态端口设置为 1433。 命名实例->启用,不影响连接。

package demojdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.Iterator;

/**
 *
 * @author ttn
 */
public class DemoJdbc 

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
        // TODO code application logic here
        baglanti();
    

    public static void baglanti() 

        try 
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("driver yuklendi");            
         catch (ClassNotFoundException e) 
            System.out.println("Drive bulunmadi"+e);
        
        Connection con = null;

        String url = "jdbc:sqlserver://127.0.0.1;databaseName=mydatabase;";
        try 
            con= DriverManager.getConnection(url, "xxx","xxx");
            System.out.println("Veritabanına baglantı kuruldu");            
            Statement stmt=con.createStatement();


         catch (Exception e) 
            System.out.println("Hata Var"+e);
        

    


【问题讨论】:

尝试将 127.0.0.1 更改为 MachineName\SQLExpress 不,我无法连接到 MachineName\SQLExpress 【参考方案1】:

我通过设置命名实例安装了 sqlserver,而 sqlserver 2008 R2 express 不提供 sql 浏览器。也许这是真正的问题,或者命名管道可能会改变,我不知道。我就这样连接成功了。

当我只写 machinename 时,我可以这样连接

String url = "jdbc:sqlserver://machinename;databaseName=mydatabase;";

顺便说一句,我可以通过 toad sql server 连接服务器,将服务器名称命名为 machinename\instancename。

我找不到真正的解决方案,但我解决了

这对开发人员很有用。

https://serverfault.com/questions/371832/why-cannot-connect-to-sql-server-by-the-full-server-name-with-instance-name

【讨论】:

AFAIK SQL Server 2008R2 Express 有 SQL Server Browser 服务,只是默认禁用。 如何启用sql server 浏览器 打开服务控制面板,寻找SQL server浏览器,设置为自动启动。 是的,这行得通。谢谢。我将 services.msc 作为命令提示符运行,然后启动 SQL Server 浏览器,谢谢。但我可以通过将服务器名称指定为 //MachineName 来建立连接,并且我的服务器在服务列表中显示为 SQL SERVER(INSTANCENAME)。 我不明白您评论的第二部分:即运行 SQL Server 实例的服务。 SQL Server Browser 服务是一个帮助服务,因此其他计算机可以发现该实例(对于 JDBC 驱动程序:查找要连接到命名实例的端口)。

以上是关于通过 servername\instancename 的 sql server express 连接的主要内容,如果未能解决你的问题,请参考以下文章

下拉框多选框单选框 通过TagHelper绑定数据

酶:测试孩子通过安装渲染失败,但通过浅时通过

java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解

通过代码进行 Spring 配置与通过注释进行配置

如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”?

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)