【问题标题】:Find databasename in connectionstring using SSIS expression使用 SSIS 表达式在连接字符串中查找数据库名称
【发布时间】:2021-10-09 11:33:34
【问题描述】:

我在 SSIS 2019 中有一个项目参数,其中包含一个连接字符串,并且具有例如以下值:

Data Source=SERVER1;Initial Catalog=CoolDatabase;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;

我正在尝试使用 SSIS 表达式从项目参数中提取字符串 CoolDatabase。

我走了这么远,但后来碰壁了……问题是我不知道如何找到初始目录名称的长度。在这种情况下,它是 12,但实际上它可以是任何值。

@[User::databasename]=  SUBSTRING( @[$Project::DOELSERVER_ConnectionString] ,
 FINDSTRING( @[$Project::DOELSERVER_ConnectionString] ,"Initial Catalog=",1 ) + 16
,12
)

如何确定 Initial Catalog 的长度? (在本例中为 12)

【问题讨论】:

    标签: ssis expression sql-server-2019


    【解决方案1】:

    我是这样解决的:

    1. 如果您只想要 CoolDatabase 这样的结果,请使用以下表达式:
    RIGHT(
       LEFT( @[$Project::DOELSERVER_ConnectionString], FINDSTRING(@[$Project::DOELSERVER_ConnectionString], ";", 2) - 1),
       FINDSTRING( REVERSE(LEFT( @[$Project::DOELSERVER_ConnectionString], FINDSTRING(@[$Project::DOELSERVER_ConnectionString], ";", 2) - 1)), "=", 1) - 1
    ) 
    
    1. 如果您想要Initial Catalog=CoolDatabase 这样的结果,请使用:
    RIGHT(
       LEFT( @[$Project::DOELSERVER_ConnectionString], FINDSTRING(@[$Project::DOELSERVER_ConnectionString], ";", 2) - 1),
       FINDSTRING( REVERSE(LEFT( @[$Project::DOELSERVER_ConnectionString], FINDSTRING(@[$Project::DOELSERVER_ConnectionString], ";", 2) - 1)), ";", 1) - 1
    )
    

    这两个代码之间的唯一区别是最后一个表达式中的= 和第二个表达式中的;。

    【讨论】:

    • 我明白了。凉爽的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2021-06-25
    • 2020-11-23
    • 2012-05-20
    相关资源
    最近更新 更多