【问题标题】:How to make sure the connection string is for a local machine如何确保连接字符串用于本地计算机
【发布时间】:2011-09-15 11:01:37
【问题描述】:

我正在创建一个通过 ADO.NET 连接到 MS SQL Sever 的客户端应用程序。我需要一个用户指定一个连接字符串来连接到数据库。然而,用户应该只连接到安装在他们机器上的 SQL Server Express。我需要检查连接字符串以确定它是否是本地连接字符串。

显而易见的想法是检查CS是否以“。”开头或“本地”或“*this_machine_name*”。但我不确定这是否涵盖所有可能的情况。

有没有更好的方法来执行这样的检查?

UPD:我暗示本地机器上可能有多个 SQL Server 实例,并且实例名称未知。也可能有一个未命名的实例。

UPD2:其实我只是要求用户指定一个 SQLServer 实例。

谢谢。

【问题讨论】:

  • 您还应该检查 127.0.0.1,如果是另一个 IP,您应该验证该 IP 地址与主机 IP 地址相同
  • 我不会让用户输入完整的连接字符串。只需让用户输入所有相关数据除了主机并自己添加
  • 如果用户想使用默认的未命名 SQL Server 实例怎么办?此外,我们的目标是使用类似于 MS SQL 管理工作室使用的格式,如“server\instance”或只是“server”。

标签: .net sql-server connection-string sqlconnection


【解决方案1】:

检索连接字符串,从中提取主机名,将主机名传递给 System.Net.Dns.GetHostEntry(String),瞧!您将获得一个包含 IP 地址的 IPHostEntry 实例。检查 127.0.0.1 是否存在。

【讨论】:

  • 如果 CS 不包含主机名(如“.”或“(本地)”),我们可以跳过此检查。太好了,谢谢。
【解决方案2】:

不是验证连接字符串,而是提示用户输入数据库名称,是否使用集成身份验证,如果不使用,用户名和密码,然后使用'建立自己的连接字符串,这不是更容易吗? (本地)'作为服务器?

【讨论】:

  • 问题是机器上可能有不止一个SQL Server实例,而且实例名称不知道。
猜你喜欢
  • 2010-12-05
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
相关资源
最近更新 更多