Teradata会话中止AMP CPU阈值

我有一个SSIS软件包,正在刷新SSAS多维数据集分区。每个分区都是针对Teradata运行的SQL查询。我在SSIS软件包中使用“用于Teradata的NET数据提供程序”。 SSAS多维数据集正在使用“ Teradata.Client.Provider”。任何特定的查询都可以执行。但是,经过5-10次迭代,我得到了SESSION ABORT。经过一番调查,我发现所有查询都在同一会话中使用:

sel * from DBC.DBQLogTbl where sessionid = 123456

此查询返回多行,其中包含来自循环的查询。每个查询本身不会超过CPU AMP阈值,但是组合AMP使用量超过了阈值。 我已经在SSIS和SSAS中配置了连接字符串,如下所示:

  • SSAS:连接超时= 180;身份验证机制= LDAP;响应缓冲区大小= 64000;用户ID = ***;数据源= my.production.server;持久安全信息= True;会话字符集= UTF16;连接Pooling = False;连接池超时= 15;命令超时= 900
  • SSIS:数据源= my.production.server;用户ID = ***;身份验证机制= LDAP;持久性安全信息= True;会话字符集= UTF16;连接池= False;

我已禁用多维数据集上的并行执行。从连接字符串可以看到,我已经禁用了连接池。我已在多维数据集上将“最大连接数”设置为1。

关于如何强制每个查询在Teradata上拥有自己的会话的任何想法?

更新

经过一番调查,我很确定在多维数据集或数据库驱动程序中的某个地方隐藏了一个错误。多维数据集只是忽略

  

Connection Pooling = false;

参数,并在同一会话中执行每个SQL命令。因此,我研究了驱动程序如何处理池。根据文档,在池中存储连接资源时,连接字符串用作键。因此,如果提供不同的连接字符串,驱动程序将处理“新连接”之类的情况,并且不使用池中已经存在的连接字符串。现在,每次迭代后,我都有一个脚本任务,可以“混洗”给定连接字符串的参数并更新多维数据集上的连接。这绝对是黑客,我不建议您将其作为解决方案,但绝望的时代要求采取绝望的措施...

string dcs = @"Connection Timeout=180;Authentication Mechanism=LDAP;Response Buffer Size=64000;User Id=***;Data Source=my.production.server;Persist Security Info=True;Session Character Set=UTF16;Connection Pooling=False;Connection Pooling Timeout=15;Command Timeout=900";
Random r = new Random();
var shuffled = dcs.Split(';').OrderBy(x => r.Next()).ToArray();
var newCs = string.Join(";",shuffled);
okyi1 回答:Teradata会话中止AMP CPU阈值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3124612.html

大家都在问