是否可以通过 .dtsConfig 文件更改连接字符串中的提供程序?

问题描述 投票:0回答:1

我有一个已部署的 SSIS 包的连接字符串,如下所示:

Data Source=DBServerName;Initial Catalog=DbName;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=False;

现有 .dtsConfig 文件已包含更改服务器名称和数据库名称的条目:

    <Configuration ConfiguredType="Property" Path="\Package.Connections[MyConnection].Properties[InitialCatalog]" ValueType="String">
    <ConfiguredValue>DbName</ConfiguredValue>
  </Configuration>

  <Configuration ConfiguredType="Property" Path="\Package.Connections[MyConnection].Properties[ServerName]" ValueType="String">
    <ConfiguredValue>DBServerName</ConfiguredValue>
  </Configuration>

我想添加一个额外的条目来尝试更改提供者名称。我尝试过这样的事情:

  <Configuration ConfiguredType="Property" Path="\Package.Connections[MyConnection].Properties[Provider]" ValueType="String">
    <ConfiguredValue>MSOLEDBSQL</ConfiguredValue>
  </Configuration>

然而,这并没有被采纳。我注意到,对于其他两个属性的名称与连接字符串中的名称不完全匹配。我想知道 Provider 是否有其他需要使用的名称? 是否可以像这样更改提供者名称?

sql-server ssis
1个回答
0
投票

是的,但你不能用你所展示的零散的属性来做到这一点。您可以指定 ConnectionString 中的所有内容,也可以不更改提供程序。

作为示例,我将树下的所有内容都放入配置文件中

这就是我所看到的

<?xml version="1.0"?>
<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="HOME\bfellows" GeneratedFromPackageName="SO_67389233" GeneratedFromPackageID="{DE300BCB-F7C1-4D7F-9BD3-3E109E806CFA}" GeneratedDate="1/9/2024 9:09:23 AM"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.\dev2017;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[Description]" ValueType="String">
        <ConfiguredValue/>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[InitialCatalog]" ValueType="String">
        <ConfiguredValue/>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[Name]" ValueType="String">
        <ConfiguredValue>.\dev2017</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[Password]" ValueType="String">
        <ConfiguredValue/>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[ProtectionLevel]" ValueType="Int32">
        <ConfiguredValue>1</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[RetainSameConnection]" ValueType="Boolean">
        <ConfiguredValue>0</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[Scope]" ValueType="Int32">
        <ConfiguredValue>0</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[ServerName]" ValueType="String">
        <ConfiguredValue>.\dev2017</ConfiguredValue>
    </Configuration>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[UserName]" ValueType="String">
        <ConfiguredValue/>
    </Configuration>
</DTSConfiguration>

正如 Thom A 评论的那样,酒店本身没有列出单独的设置。 但是,如果您只使用

ConnectionString
属性,那么看看您拥有什么。

数据源=.\dev2017;提供商=SQLNCLI11.1;集成安全性=SSPI;自动翻译=False;

连接字符串属性包含Provider属性。

如果我将该配置文件精简为 ConnectionString 并将 Provider=SQLNCLI11.1 替换为 Provider=SQLOLEDB.1

    <Configuration ConfiguredType="Property" Path="\Package.Connections[.\dev2017].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.\dev2017;Provider=SQLOLEDB.1;Integrated Security=SSPI;Auto Translate=False;</ConfiguredValue>
    </Configuration>

打开/关闭包,现在我的连接管理器正在显示更新的提供程序。

© www.soinside.com 2019 - 2024. All rights reserved.