我正在创建一个客户端应用程序,通过ADO.NET连接到MS SQL server。我需要一个用户指定一个连接字符串连接到数据库。然而,用户应该只连接到安装在他们的机器上的SQL Server Express。我需要检查连接字符串,以确定它是否是本地的。
显而易见的想法是检查CS是否以"。"或"local"或"*this_machine_name*"开头。但我不确定这是否涵盖了所有可能的情况。
是否有更好的方法来执行这样的检查?
UPD:我的意思是本地机器上可能有多个SQL Server实例,而实例名是未知的。也可能有未命名的实例
UPD2:实际上我只要求用户指定一个SQLServer实例。
谢谢。
检索连接字符串,从中提取主机名,将主机名传递给System.Net.Dns.GetHostEntry(string)和voíla!你得到一个包含IP地址的IPHostEntry实例。检查是否有127.0.0.1
与其验证连接字符串,不如提示用户输入数据库名称,是否使用集成认证,如果不使用,则提示用户名和密码,然后使用'(local)'作为服务器构建自己的连接字符串,这不是更容易吗?