使用 SSIS 表达式在连接字符串中查找数据库名称
Find databasename in connectionstring using SSIS expression
我在 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
)
如何确定初始目录的长度? (在本例中为 12)
我是这样解决的:
- 如果您只想要
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
)
- 如果您想要
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
)
这两个代码之间的唯一区别是第一个表达式中的 =
和最后第二个表达式中的 ;
。
我在 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
)
如何确定初始目录的长度? (在本例中为 12)
我是这样解决的:
- 如果您只想要
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
)
- 如果您想要
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
)
这两个代码之间的唯一区别是第一个表达式中的 =
和最后第二个表达式中的 ;
。