You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Express连接异常排查:特定机器「在我机器上正常」问题

解决SQL Express下Katalon自动化测试结果写入数据库的连接异常问题

问题背景

我最近在用Katalon(类似Chrome版Selenium)做自动化测试时,碰到了一个特别棘手的数据库连接问题:

  • 只有安装SQL Express的本地机器会抛出异常:A network-related or instance-specific error occurred while establishing a connection to SQL Server.
  • 其他装了完整版SQL Server 2017的机器都能正常运行
  • 我已经确认TCP/IP协议、防火墙规则、远程连接权限都开了,SQL Server Management Studio也在运行,连接字符串也加了\SQLExpress标识,但问题还是没解决

问题根源与修复方案

折腾了一周后,我偶然结合另一个更明确的错误System.ArgumentException: Keyword not supported: 'datasource'找到了问题的核心:连接字符串的关键字用错了。

原来的连接字符串里用了datasource,但SQL Server标准的连接字符串关键字应该是server。修复后的正确连接字符串如下:

connStr = @"server = .\sqlexpress; Initial Catalog = AutoTestDB; Integrated Security = true";

如果你的环境也碰到相同的连接异常,或者弹出datasource关键字不支持的错误,不妨试试改用这个连接格式。

相关代码示例

写入数据库的C#代码(已修复连接字符串)

public void testDBAdd(String testName, Boolean pass, String testComment) 
{ 
    SqlConnection con; 
    SqlDataAdapter daAutoTest; 
    DataSet dsAutoTestDB = new DataSet(); 
    SqlCommandBuilder cmdBAutoTest; 
    String connStr, sqlAutoTest; 
    // 修复后的连接字符串
    connStr = @"server = .\sqlexpress; Initial Catalog = AutoTestDB; Integrated Security = true"; 
    con = new SqlConnection(connStr); 
    sqlAutoTest = @"SELECT * FROM TestResults"; 
    daAutoTest = new SqlDataAdapter(sqlAutoTest, connStr); 
    cmdBAutoTest = new SqlCommandBuilder(daAutoTest); 
    daAutoTest.FillSchema(dsAutoTestDB, SchemaType.Source, "AutoTest"); 
    daAutoTest.Fill(dsAutoTestDB, "AutoTest"); 
    foreach (DataRow drAutoTest in dsAutoTestDB.Tables["AutoTest"].Rows) 
    { 
        if (pass == true && drAutoTest["testName"].ToString() == testName) 
        { 
            drAutoTest.BeginEdit(); 
            drAutoTest["testName"] = testName; 
            drAutoTest["testResult"] = 1; 
            drAutoTest["testComment"] = testComment; 
            drAutoTest.EndEdit(); 
            daAutoTest.Update(dsAutoTestDB, "AutoTest"); 
        } 
        else if (pass == false && drAutoTest["testName"].ToString() == testName) 
        { 
            drAutoTest.BeginEdit(); 
            drAutoTest["testName"] = testName; 
            drAutoTest["testResult"] = 0; 
            drAutoTest["testComment"] = "Exception: " + testComment; 
            drAutoTest.EndEdit(); 
            daAutoTest.Update(dsAutoTestDB, "AutoTest"); 
        } 
    } 
}

执行测试并收集结果的代码

public void settingTest<TestNumber>() 
{ 
    IWebDriver driver = new ChromeDriver(); 
    ChromeOptions options = new ChromeOptions(); 
    options.AddArguments("--start-maximized"); 
    driver = new ChromeDriver(options); 
    String testName = "<Test Number>", testComment = ""; 
    Boolean pass = false; 
    try 
    { 
        settingsLogin(driver); 
        settingsClick(driver); 
        Assert.IsTrue(driver.FindElement(ElementLocator).Displayed); 
        if (driver.FindElement(ElementLocator).Displayed == true) 
        { 
            testComment = "Pass"; 
            pass = true; 
            testDBAdd(testName, pass, testComment); 
        } 
    } 
    catch (Exception ex) 
    { 
        testComment = "" + ex.TargetSite + "" + ex.Message; 
        testDBAdd(testName, pass, testComment); 
    } 
    finally 
    { 
        driver.Close(); 
    } 
}

内容的提问来源于stack exchange,提问作者John McGlinchey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:41:54