如何确保连接字符串适用于本地计算机
我正在创建一个通过 ADO.NET 连接到 MS SQL Sever 的客户端应用程序。我需要用户指定连接字符串来连接到数据库。但是,用户应仅连接到其计算机上安装的 SQL Server Express。我需要检查连接字符串以确定它是否是本地字符串。
显而易见的想法是检查 CS 是否以“.”开头。或“本地”或“*this_machine_name*”。但我不确定这是否涵盖了所有可能的情况。
有没有更好的方法来执行这样的检查?
UPD:我的意思是本地计算机上可能有多个 SQL Server 实例,并且实例名称未知。还可能存在未命名的实例。
UPD2:事实上我只要求用户指定一个SQLServer实例。
谢谢。
I'm creating a client application that connects to MS SQL Sever via ADO.NET. I need a user to specify a connection string to connect to a database. However users should only connect to SQL Server Express that is installed on their machine. I need to check the connection string to determine if it's a local one or not.
The obvious idea is to check whether the CS starts with "." or "local" or "*this_machine_name*". But I'm not sure that covers all possible cases.
Is there a better way to perform such a check?
UPD: I imply that there may be more than one instance of the SQL Server on the local machine, and instance names are not known. There also may be an unnamed instance.
UPD2: In fact I only ask users to specify an SQLServer instance.
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
检索连接字符串,从中提取主机名,将主机名传递给 System.Net.Dns.GetHostEntry(String) ,瞧!您将获得一个包含 IP 地址的 IPHostEntry 实例。检查 127.0.0.1 是否存在。
Retrieve the connection string, extract the hostname from it, pass the hostname to System.Net.Dns.GetHostEntry(String) and voíla! You get an IPHostEntry instance containing IP adresses. Check if 127.0.0.1 is there.
与验证连接字符串相比,提示用户输入数据库名称、是否使用集成身份验证以及用户名和密码,然后使用 '(local) 构建自己的连接字符串不是更容易吗? ' 作为服务器?
Rather than validating the connection string, would it not be easier to prompt the user for the database name, whether to use integrated auth or not and if not, the user name and password and then build your own connection string, using '(local)' as the server?