我有一个SSIS表达式。如下:我将这个软件包的结果作为短信发送,但是短信没有显示下划线,因此我现在选择使用破折号。
短信显示为OLEGALINITTEST
我有一种方法可以逃脱下划线,以便在短信上显示?
REPLACE(@ [System :: PackageName],“ _”,“-”)= O-LEGAL-INIT-TEST
所需的输出是O_LEGAL_INIT_TEST
我将字符串中的下划线替换为“-”,将变量发送到发送实际短信的Oracle软件包中。
@[System::PackageName]
通常与不带文件扩展名的文件名相同,因此给定名为This-Is-Fun.dtsx
的程序包,我们希望PackageName属性为This-Is-Fun
。
但是,在某些情况下并非如此。如果我们将包命名为A=B.C_D.dtsx
,则包的对象名称为A B C_D
。每个有问题的字符都用空格替换。
如果您尝试使用“奇怪的东西”来命名SSIS对象,它将在操作上引发错误,例如
名称不能包含以下任何字符:/ \:[]。 =
对于包名称本身,限制是相似的,但有所不同,因为Windows / Visual Studio会忽略
包含以下任何字符:/? :&\ *“ <> |#%
包含Unicode控制字符包含无效的代理人
字符为系统保留名称,包括'CON','AUX','PRN','COM1'
或'LPT2'为'。'或“ ..”
与SSIS中的表达式一样,请检查要构建的内容。在指定表达式的位置创建一个SSIS变量。
假设您创建一个名为SMS_CONTENT
的字符串数据类型的SSIS变量,然后用下划线替换空格。表达式是
REPLACE(@[System::PackageName], " ", "_")
给出起始软件包名称
a b SO_61618859_This_Is_Fun
a_b_SO_61618859_This_Is_Fun
如果它在开发期间工作正常,但在生产中出现问题,请通过脚本任务的信息事件记录该值,以便您可以在运行后查看日志。 https://billfellows.blogspot.com/2016/04/biml-script-task-test-for-echo.html您不需要对其进行Biml,只需将变量标记为Read Only变量集合的一部分,以下脚本将在日志中记录值。对于您的情况,我将添加System :: PackageName,然后添加我的SSIS变量User :: SMS_CONTENT
bool fireAgain = false;
string message = "{0}::{1} : {2}";
foreach (var item in Dts.Variables)
{
Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain);
}