我一直在SAS工作,通过ODBC连接到DB2一段时间了,这个PROC SQL步骤通常有效:
proc sql;
connect to odbc(dsn=DSQ user="UserID" password="Password");
execute (set current degree = 'ANY' ) by ODBC;
create table tempTable as select * from connection to odbc (
select *
from schemaName.tableName
);
quit;
但是,偶尔我会收到以下错误,当我收到此错误时,我将无法运行另一个ODBC查询很长一段时间,因为每次我尝试运行查询时都会得到相同的错误:
ERROR: CLI error trying to establish connection: [IBM][CLI Driver] SQL1042C An unexpected system
error occurred. SQLSTATE=58004
一段时间后,错误要么自行解决,要么我做了一些我不知道的事情来解决问题。这是一个非常令人沮丧的问题,因为我永远不知道这个问题会持续多久,我想要一个更强大的解决方案来解决这个问题。我检查了db2diag.log文件,这是描述此错误的部分:
2015-06-03-08.17.34.345000-300 I60888H446 LEVEL: Error
PID : 4452 TID : 7804 PROC : sas.exe
INSTANCE: DB2 NODE : 000
HOSTNAME:
EDUID : 7804
FUNCTION: DB2 Common, Cryptography, cryptDynamicLoadGSKitCrypto, probe:998
MESSAGE : ECF=0x90000007=-1879048185=ECF_UNKNOWN
Unknown
DATA #1 : unsigned integer, 4 bytes
60
DATA #2 : String, 11 bytes
gsk8sys.dll
我试图找到一个放在这篇文章中的示例,所以我在SAS中运行了这段代码,看看错误是否会回来,但它似乎已经解决了错误,因为在运行这段代码之后,我运行初始代码,它工作。以下代码似乎解决了这个问题。
proc sql;
connect to odbc(dsn=DSQ user="UserID" password="Password");
execute (set current degree = 'ANY' ) by ODBC;
create table column_names as select * from connection to odbc (
select * from sysibm.syscolumns
);
quit;
我曾尝试使用Google搜索此问题,但对此特定错误没有多大帮助。有没有理由说第二个SAS代码会解决我遇到的问题?有没有办法解决这个问题所以将来不会再回来了?
请注意,当错误发生时,我仍然可以通过Microsoft Access中的ODBC运行查询没有任何问题。看来这只是一个特定实例的问题。
系统设置:
Windows 7 64位
SAS 9.3(32)
DB2 v10.5.300.125
提前感谢您的帮助!
更新: 有几次,我能够进入任务管理器并删除一些仍在运行的进程,然后这个问题就会自行解决,但是今天发生这个问题时,那些进程就不存在了。对此有任何想法将不胜感激。
答案 0 :(得分:0)
症状可能取决于Db2 connect和程序(sas.exe)的安装顺序。如果首先安装了DB2 connect,则不应发生这种情况。因此,建议先删除并重新安装两个产品,然后再安装Db2 connect。
希望这会有所帮助。