使用SSIS表达式在connectionstring中查找数据库名



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

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

使用SSIS表达式,我试图从projectparameter中提取字符串CoolDatabase

我走了这么远,但后来我撞上了砖墙......问题是我不知道如何找到初始目录名称的长度。在本例中,它是12,但实际上它可以是任何值。

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

如何确定初始目录的长度?(在本例中为12)

我是这样解决的:

  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
)

两个代码的唯一区别是第一个表达式为=,第二个表达式为;

最新更新