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

SqlConnectionStringBuilder的ApplicationName属性设置不生效问题排查

问题原因与解决办法

这完全是属性设置顺序导致的问题,和SqlConnectionStringBuilder本身无关——你不小心用后续的连接字符串覆盖了之前设置的自定义应用名称。

具体原因

当你给SqlConnectionStringBuilder.ConnectionString赋值时,这个操作会完整解析传入的字符串,然后重置Builder内部的所有配置项:

  • 如果传入的字符串里没有某个参数(比如你这里的Application Name),Builder会把该参数重置为默认值;
  • 你先设置了.ApplicationName = "My App Name",紧接着就用一个不包含应用名称的连接字符串覆盖了整个Builder的配置,所以自定义名称直接被冲没,回到了默认的.Net Sql Client Data Provider。

两种解决方式

方式一:调整属性设置顺序

先初始化基础连接字符串,再设置自定义属性(包括应用名称),这样后续的设置不会被覆盖:

Dim ConnectionBuilder As New SqlConnectionStringBuilder
With ConnectionBuilder
    .ConnectionString = $"Server={SQLServerNameAndIstance};Database={TargetDB}"
    .ApplicationName = "My App Name" ' 现在设置会覆盖默认值
    .UserID = ConnectionUser
    .Password = ConnectionPassword
    .Pooling = True
    .WorkstationID = ClientID
End With
ConnectionString = ConnectionBuilder.ToString

方式二:使用强类型属性逐个配置(推荐)

完全跳过拼接初始连接字符串的步骤,直接使用SqlConnectionStringBuilder提供的强类型属性来配置所有参数,这样更清晰也不容易出错:

Dim ConnectionBuilder As New SqlConnectionStringBuilder
With ConnectionBuilder
    .ApplicationName = "My App Name"
    .DataSource = SQLServerNameAndIstance ' 对应连接字符串里的Server参数
    .InitialCatalog = TargetDB ' 对应连接字符串里的Database参数
    .UserID = ConnectionUser
    .Password = ConnectionPassword
    .Pooling = True
    .WorkstationID = ClientID
End With
ConnectionString = ConnectionBuilder.ToString

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:57:30