将 SSIS 包配置应用于多个包

2024-03-03

我有大约 85 个 SSIS 包使用相同的连接管理器。 我知道每个包都有自己的连接管理器。 我正在尝试确定什么是最佳配置方法,以根据包所在的服务器简单地设置连接管理器的连接字符串。 我在网上访问了各种建议,但找不到任何可以简单地将配置从一个包复制到其余包的做法。 显然有很多方法,例如 XML 文件、SQL Server、环境变量等。

所有文章都指出通过使用 XML 或 SQL 方法来使用间接方法。为什么使用环境变量来保存连接字符串是一种糟糕的方法?

任何建议都将受到高度赞赏。

Thanks!


为什么使用环境变量来保存连接字符串是一种糟糕的方法?

我发现环境变量或注册表项配置方法受到严重限制,因为它一次只能配置一项。对于连接字符串,您需要为给定服务器上的每个目录定义一个环境变量。也许只有 2 或 3 个,这是可以管理的。我们的每个数据库实例有 30 多个,并且我们有多实例机器,因此您可以看到这个问题如何迅速演变成维护噩梦。与基于表或 xml 的方法进行对比,后者可以为给定的配置键保存多个配置项。

...根据包所在的服务器简单设置连接管理器的连接字符串的最佳配置方法。

如果您走这条路,我建议创建一个变量 ConnectionString 并使用它来配置属性。这是一个额外的步骤,但我再次发现调试变量上的复杂表达式比调试属性上的复杂表达式更容易。使用变量,您始终可以在包上弹出断点并查看本地窗口以查看当前值。

创建名为 ConnectionString 的变量后,右键单击它,选择“属性”并将 EvaluateAsExpression 设置为 True,并将 Expression 属性设置为类似"Data Source="+ @[System::MachineName] +"\\DEV2012;Initial Catalog=FOO;Provider=SQLNCLI11.1;Integrated Security=SSPI;"

评估时,它将填写当前计算机的名称 (DEVSQLA),并且我将有一个连接到命名实例 DEV2012 的有效 OLE DB 连接字符串。

Data Source=DEVSQLA\DEV2012;Initial Catalog=FOO;Provider=SQLNCLI11.1;Integrated Security=SSPI;

如果您有比单个变量更复杂的配置需求,那么我可以看到您使用它来将连接管理器配置到一个 sql 表,该表保存所有配置键和值的完整存储库。

...无法在任何地方找到可以简单地将配置从一个包复制到其余包的做法

我会通过编程途径修改所有 80something 包。我们从第三方收到了一批软件包,但他们没有遵循我们的配置和日志记录程序。代码并不是非常难,如果您准确地描述了为解决您的需求而进行的更改类型,我很乐意在这个答案中添加一些代码。它可以像下面这样简单。调用该函数后,它将通过将 SSISDB ole 连接管理器上的 SQL Server 配置添加到名为 Default.2008.Sales 的过滤器的名为 dbo.sysdtsconfig 的表来修改包。

string currentPackage = @"C:\Src\Package1.dtsx"

public static void CleanUpPackages(string currentPackage)
{
    p = new Package();
    p.app.LoadPackage(currentPackage, null);
    Configuration c = null;

    // Apply configuration Default.2008.Sales
    // ConfigurationString => "SSISDB";"[dbo].[sysdtsconfig]";"Default.2008.Sales"
    // Name => MyConfiguration
    c = p.Configurations.Add();
    c.Name = "SalesConfiguration";
    c.ConfigurationType = DTSConfigurationType.SqlServer;
    c.ConfigurationString = @"""SSISDB"";""[dbo].[sysdtsconfig]"";""Default.2008.Sales""";

    app.SaveToXml(sourcePackage, p, null);
}

将变量添加到包中不会花费更多代码。在清理过程中,添加这样的代码,以将一个新变量添加到具有如上所述表达式的包中。

string variableName = string.Empty;
bool readOnly = false;
string nameSpace = "User";
string variableValue = string.Empty;
string literalExpression = string.Empty;

variableName = "ConnectionString";
literalExpression = @"""Data Source=""+ @[System::MachineName] +""\\DEV2012;Initial Catalog=FOO;Provider=SQLNCLI11.1;Integrated Security=SSPI;""";

p.Variables.Add(variableName, readOnly, nameSpace, variableValue);
p.Variables[variableName].EvaluateAsExpression = true;
p.Variables[variableName].Expression = literalExpression;

如果我遗漏了什么或者您需要澄清任何问题,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SSIS 包配置应用于多个包 的相关文章

  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • java ResultSet,使用MAX sql函数

    你好 这就是我想要的 我连接到数据库并检索 UniqueId 列的最大元素 并将其分配给名为 maxID 的整数变量 这是我的方法 int maxID 0 Statement s2 con createStatement s2 execut
  • date_sub 对于 mysql 可以,对于 postgresql 可以

    此查询适用于 mySQL 不适用于 Postgresql select from where id and h gt date sub now INTERVAL 30 MINUTE 错误是 Query failed ERREUR erreu
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一
  • Linq To SQL - 拥有和分组依据

    我下面这个查询工作正常 不过我想使用 Linq 来实现它 select u ID u NAME from Task t join BuildingUser bu ON bu ID BUILDING t ID BUILDING join Us
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • Oracle:如何获取刚刚插入的行的序列号?

    如何获取刚刚插入的行的序列号 插入 返回 declare s2 number begin insert into seqtest2 x values aaa returning seq into s2 dbms output put lin
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • 无法在 Mac OS 上的 python 中安装 beautifulsoup4

    我正在尝试安装beautifulsoup4在我的 mac 中使用以下命令 pip3 install beautifulsoup4 但我收到以下错误 Could not find a version that satisfies the re
  • 更改班级名称

    有没有办法更改类的名称 不仅仅是类对象 而是类本身 例如 class Foo stuff obj1 Foo Code that renames Foo class to Food obj2 Food if obj1 some value o
  • 如何在asp.net core中缩小文件?

    asp net core 的文档显示了如何操作捆绑和缩小 https docs asp net en latest client side bundling and minification html css and js使用 grunt
  • 如何将 onchange 与自动完成材料 ui 一起使用?

    使用handleChange 方法处理带有Hooks 样式的表单输入的OnChange 事件 该事件设置对象的状态 handleChange 函数依次调用 setLocation 后者用新值更新位置状态 为了使用户数据输入更容易 我决定将城
  • 指向类模板成员的函数指针

    我有这门课 template
  • 添加和删​​除匿名事件处理程序

    我想知道这是否真的有效 private void RegisterKeyChanged T item item OnKeyChanged o k gt ChangeItemKey T o k private void UnRegisterK
  • 使用 dplyr rename(across(

    嘿 我正在尝试通过使用新版本的 dplyr 添加 Last 来重命名某些列 但我不断收到此错误 Error across must only be used inside dplyr verbs 这是我的代码 data gt rename
  • Laravel 如何从子域 URL 中删除“api”前缀

    我创建了一个 Laravel 应用程序 它既是 Web 应用程序 又为 android 和 iOS 平台提供 REST API 我有两个路由文件 一个是 api php 另一个是 web php routes api php 路由如下 ro
  • 如何在Android中的scrollview/listview中添加可拖动的滚动条?

    我有一个使用我创建的 customListAdapter 的 listView 当用户滚动列表时 他 她会像平常一样在右侧看到滚动指示器 但是 我想在右侧显示一个可拖动的跟踪按钮 以便用户能够按住该按钮并快速滚动列表 我怎样才能做到这一点
  • iPod 库中的 .m4a 原始数据无法播放

    所以我面临着一个非常奇怪的问题 想知道是否有其他人遇到过这个问题 我从手机音乐库中的 MPMediaItem 获取原始数据 然后通过 HTTP 将其发送到其他地方播放 我的问题出现的地方是当我从 m4a 类型的文件中获取原始数据时 它似乎缺
  • 使用张量流理解 LSTM 模型进行情感分析

    我正在尝试使用 Tensorflow 学习 LSTM 模型进行情感分析 我已经经历了LSTM模型 http colah github io posts 2015 08 Understanding LSTMs 以下代码 create sent
  • 如何在不检索记录的情况下计算 LDAP 查询匹配的条目数?

    如何在不检索记录的情况下计算 LDAP 查询匹配的条目数 我正在对一大组条目尝试几种不同的 LDAP 过滤器 出于性能原因 我只想知道返回条目的数量 而不是获取全部条目 这可能吗 如何实现 不可以 LDAP 协议不提供计数支持 服务器实现可
  • 如何调试 kube-proxy 中的错误:连接被对等方重置

    我的 kube proxy 出现错误 E0107 21 48 57 738867 1 proxysocket go 160 I O error read tcp 10 2 11 253 37568 connection reset by p
  • 获取 Pyspark Dataframe 的 nmaxest 值的更有效方法

    我正在尝试获取数据帧一列的前 5 个值 下面给出了数据帧的示例 事实上 原始数据框有数千行 Row item id u 2712821 similarity 5 0 Row item id u 1728166 similarity 6 0
  • Python-将二进制掩码转换为多边形

    给定一个简单的二进制掩码 例如矩形的边界 如何使用多边形获取 x y 坐标 这是我到目前为止所尝试过的 coords np transpose np nonzero mask 然而 这种方法会生成填充的对象 而不是所需的边界 plt plo
  • JQuery Ajax 成功:function()

    我将数据发布到 php 处理页面 如下所示 insert mysql query INSERT INTO table substr addfields 0 1 VALUES substr addvals 0 1 我希望有 if insert
  • ASP.Net 注册表中的 MS Captcha 超时时间

    我目前在注册表中使用 MS Captcha 如果表格在一分钟内提交 效果就很好 但有时 在填写表单后 用户然后搜索要上传的文档 当他们最终提交表单时 他们会收到如下服务器错误 NullReferenceException 未将对象引用设置为
  • 如何通过亚马逊API获取书籍封面图片[重复]

    这个问题在这里已经有答案了 我想通过 Amazon API 从 ASIN 获取一本书的封面 我用ItemLookup功能 但我只得到author manufacturer和title ie
  • 如何制作第三方组件的 DCU 文件,而不是在我的应用程序目录中生成?

    在我的 Delphi 中 每当我重建应用程序时 所有第 3 方组件的 DCU 文件都会在我的应用程序目录 可执行文件所在的目录 中生成 我该如何改变这种行为 这样第三方组件的 DCU 文件就不会在我的应用程序目录中生成 编译器生成的 dcu
  • 将 SSIS 包配置应用于多个包

    我有大约 85 个 SSIS 包使用相同的连接管理器 我知道每个包都有自己的连接管理器 我正在尝试确定什么是最佳配置方法 以根据包所在的服务器简单地设置连接管理器的连接字符串 我在网上访问了各种建议 但找不到任何可以简单地将配置从一个包复制