如何快速检查SQL连接而无需等待30秒进行connection.open();

时间:2017-08-01 20:24:06

标签: c# sql-server sqlconnection

如果我有一个基于用户输入的连接字符串,我想快速确定它是否是有效输入。我做了一些研究,似乎人们使用.Open()来检查连接。但是在我的控制台应用程序中,此检查在抛出catch语句之前需要大约30秒。有更快的方法吗?

编辑:你们中的一些人建议将超时设置为低于1的值。这不是值得关注的问题吗?考虑到默认设置为 30 ,我担心在有效但速度慢的连接上过早计时。

如果您需要,这是我的代码:

while (sqlManager == null)
{
    try
    {
        sqlManager = new SqlManager(Console.ReadLine());
    }
    catch
    {
        sqlManager = null;
        Console.WriteLine("values entered could not be used to establish a connection, please try again: ");
    }
}
public class SqlManager
{
    public SqlManager(string userEntry)
    {
        string server;
        string db;
        if (userEntry == "")
        {
            server = Properties.Settings.Default.SqlServer;
            db = Properties.Settings.Default.SqlDatabase;
        }
        else
        {
            var splits = userEntry.Split(' ');
            server = splits[0];
            db = splits[1];
        }
        SqlConnection con = new SqlConnection($"Server= {server}; Database= {db}; Integrated Security=True;");
        con.Open();
    }
}

1 个答案:

答案 0 :(得分:1)

使用main属性定义更短的等待时间:

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout(v=vs.110).aspx

默认值为15或30秒,当前文档提到15 ...您可以将其设置为任何更大或更小的数字。 0意味着无限期等待。

实际上更改默认值有点棘手,因为ConnectionTimeout类上的ConnectionTimeout属性是只读的。您必须将其指定为连接字符串的一部分,或使用连接字符串构建器,如下所示:

SqlConnection