【问题标题】:Is there a difference between (local), '.' and localhost?(local), '.' 之间有区别吗?和本地主机?
【发布时间】:2010-09-14 10:04:06
【问题描述】:

在建立与数据库的本地编程连接时,我已经使用了所有这三种方法。它们之间有什么真正的区别吗?

【问题讨论】:

    标签: sql-server connection-string


    【解决方案1】:

    最后的结果是一样的。区别在于:

    • 'localhost'在TCP/IP级别解析,相当于IP地址127.0.0.1
    • 根据应用程序,“(本地)”可能只是“本地主机”的别名。在 SQLServer 中,“(本地)”和“。”意味着将在同一台机器内使用命名管道(共享内存)协议建立连接(不需要通过 TCP/IP 堆栈)。

    这就是理论。在实践中,如果您使用其中任何一种,我认为性能或功能不会有很大差异。

    【讨论】:

    • 在实践中,有一点不同,您应该检查启用了哪个协议。有时默认情况下只启用某些协议,这可以在 SQL Server 配置管理器中轻松查看和更改。例如,如果您通过 TCP/IP 连接但只启用了命名管道,那将产生很大的不同。
    • 我最近注意到,当在当前服务器的上下文中,你可以不指定名称来引用当前实例。我创建了一个作业,服务器名称不接受实例名称以及 localhost(例如 localhost\SQLEXPRESS),但它知道(本地)而不指定实例名称。对于 SSIS 的数据源也是如此,它知道当前实例为(本地)而不指定实际实例名称。
    【解决方案2】:

    它们通常是同义词。但是,这取决于您正在配置的应用程序。只要应用程序理解您的意思,它就不会导致性能损失。至少,如果你明白我的意思,你不必过早地根除。

    【讨论】:

      【解决方案3】:

      据我所知,点 ".""local" 是 Windows 应用程序术语,不是“标准”术语,localhost 在 TCP/IP 级别解析为 127.0.0.1 所以如果你想要确保您在跨平台上“兼容”,您应该使用 localhost 或 127.0.0.1

      【讨论】:

      • "localhost" 不是魔法或保留字;它的定义存在于/etc/hosts,或\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS,或...
      • @tzot 我什么时候说过 localhost 是一个魔法或保留字?相反,我说点和本地更多的是SQL-Server / windows命名标准,并且localhost通过hosts文件解析为127.0.0.1,通常在unix和windows上都有。想阅读吗?
      猜你喜欢
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多