一如往常,我们从一句话开始:
斯波克船长:在一切平等的情况下,斯科特先生,我同意你的看法。然而,主机,并非所有的事情都是平等的。
我的最新项目让我使用DB2作为IDM后端。我们在这一过程中遇到了一些挑战,很多是在性能方面,有些只是在总体开发方面。我将在以后的文章中讨论一些性能问题(需要dba和其他研究的更多信息)
关于DB2,我首先学到的是IDM如何识别它。我说的不是Oracle仿真层,而是IDM用来确定数据库类型的代码。考虑一下SAP IDM RDS解决方案中的以下代码,我已经对其进行了修改:
//Main function:sapc\u prepareSQLStatement
//12MAR2014–MGP–添加了DB2支持,一些清理
function sapc\u prepareSQLStatement(Par){
var dbType="%$ddm.数据库类型%";
var script="sapc_prepareSQLStatement";
var returnValue="";
//uWarning("dbType:"+dbType);
//Processing
if(dbType==1){//MS-SQL
//uWarning("Database Type is MS-SQL.");
//uWarning("Par:"+Par);
return Par;
}
else if(dbType==2){//ORACLE
returnValue=uReplaceString(Par AS","");
//uWarning("Database Type is ORACLE.");
//uWarning("returnValue:"+returnValue);
returnValue;
}
else if(dbType==5){//DB2
returnValue=uReplaceString(Par,"AS","");
//uWarning("数据库类型为DB2.");
//uWarning("returnValue:"+returnValue);
returnValue;
}
else{
uErrMsg(2,script+"SQL任务:无效数据库类型:"+dbType);
//return error message and empty result
return"";
}
}
请注意,物联网智库,SQL Server的值为1,Oracle的值为2,DB2的值为5。让你想知道3和4发生了什么…(也许是Sybase和MySQL?)
我发现的另一件事是,在DB2中将值写回表时,某些值是不受欢迎的。我需要将一个多值条目写回数据库,并且不断收到错误消息。我终于能够通过更改我正在使用的to数据库pass的属性来获得一条有用的错误消息,服务器云服务器,以便它进行SQL更新。
当我这样做时,我收到以下消息(数据已更改以保护无辜):
SQL更新失败。SQL:插入侦察角色设计EPD值(AAA、AAA、BBB)com.ibm.db2.jcc.am.SqlSyntaxErrorException异常:意外标记"!"在"PD值(NL\uu HR005)"之后发现。预期的令牌可能包括:"!!"。。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.66.46
我有点困惑,因为这是"标准"分隔符,至少就IDM而言,但是在与知识渊博的DB2 DBA核对后,大数据数据库,他确认不仅是'!!'非法写入,但'| |'也是。他还提到网上某处有一个列表,云服务器厂商,但我没能找到。如果有人能找到非法字符列表,请对此条目发表评论,我将更新条目。最后我用";"作为分隔符。
作为旁白,多年来一直有人问我,为什么要用"!!","| |',甚至";"作为分隔符?据我所知,答案是:
当您使用任何字符作为分隔符时,它可能是字符串的一部分。当您想到逗号、冒号或破折号之类的常用分隔符时,会有点明显。甚至可以用于管道、斜杠或磅等字符。但是,当您使用两个相似的字符作为分隔符时,它被认为是实际数据字符串的一部分的可能性会大大降低。
所以您有了它,DB2=5,您不能写'!!'或'| |'到表。您还需要分享哪些DB2技巧?
嗨,马特,
首先感谢你创建这个博客。
我还有一些关于使用DB2作为IDM数据库的额外发现。
如果我们找到更多的发现,我会添加更多的项目。
问候,
勒内
谢谢,勒内!
要补充的要点很好,虽然我有点假设人们知道这些事情。我认为把它"全部放在桌子上"是很好的,
我还有一些东西要发布。只是需要找时间。。。也许下周吧。,但要坚持下去!
马特
嗨马特,
谢谢你的博客。我期待着下一个主题——DB2性能问题,因为我在当前项目中使用DB2,而且还存在性能问题。系统稳定,运行速度很慢。
干杯
熊杰客
熊杰客,
谢谢!我有DBA和其他IDM工程师的笔记,他们和我一起工作,我只需要把它们放在一起!
马特
我本来打算写一个单独的博客,但我可能会把博客和线程重写成一个文档,这样整个社区就可以更新它,因为DB2确实似乎是IDM世界中"未开发的丛林"。谁知道也许我们也可以让一些开发团队来贡献自己的力量呢!
与一些DBA合作,在我们的网站上执行了以下附加操作:
其他人有什么有趣的补充吗?
谢谢你的信息,马特。我们也在与DB2合作,在我目前的实现中,并将把我们最近的发现汇编到线程/文档中。
马特,
我很高兴。DB2是IDM的下一个前沿。
马特
不用担心太长:
还有一个8和9被保留了,但是这些都是别人的问题
Br,
Chris
谢谢,Chris,那么HANA就是生命、宇宙和一切的答案?
很高兴看到有人有幽默感!
马特
PS-注意访问中的锁定问题!