Sql 如何使用OLEDB连接器到SAS在teradata中创建易失性表

Sql 如何使用OLEDB连接器到SAS在teradata中创建易失性表,sql,sas,oledb,teradata,msdasql,Sql,Sas,Oledb,Teradata,Msdasql,这不是一个纯粹的Teradata问题。我不是要求在Teradata中创建一个易失性表。对于从SAS使用OLEDB连接到Teradata的人来说,这是一个问题。我知道Volatile表可以通过使用SQL助手甚至使用SAS的Teradata接口快速创建。但是,如果有用户不在SAS网格上,并且他们没有安装SAS i/f到teradata,那么他们将使用OLEDB连接SAS和teradata 下面是一段使用OLEDB运行良好的代码,它让我们了解了我们正在讨论的内容 以下代码将运行良好: proc sql

这不是一个纯粹的Teradata问题。我不是要求在Teradata中创建一个易失性表。对于从SAS使用OLEDB连接到Teradata的人来说,这是一个问题。我知道
Volatile表
可以通过使用
SQL助手
甚至使用SAS的
Teradata接口
快速创建。但是,如果有用户不在SAS网格上,并且他们没有安装SAS i/f到teradata,那么他们将使用OLEDB连接SAS和teradata

下面是一段使用OLEDB运行良好的代码,它让我们了解了我们正在讨论的内容

以下代码将运行良好:

proc sql;
connect to OLEDB(Provider='MSDASQL' Extended_Properties='DRIVER={Teradata};DBCNAME=UDWPROD;AUTHENTICATION=ldap' UID="&DMID" PWD="&DMPWD");
  create table out.TB as 
  select a.*, b.C7
  from connection to OLEDB
(select 
DB.C1,
DB.C2,
from 
DB
) as a inner join mytb as b
on DB.C9=b.C9
and (intnx('year',b.C7,-1,'same') le a.fst_srvc_dt lt intnx('year',b.C7,1,'same'));
%put &sqlxmsg ;
disconnect from OLEDB ;
quit;
按照同样的思路,我们尝试运行这个程序,但要么是语法错误(希望如此),要么是它不喜欢它(对此感到失望..不会太好):

这是目前为SAS安装的AFAIK

NOTE: PROCEDURE SETINIT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
Operating System:   WX64_SV .
Product expiration dates:
---Base SAS Software
        30DEC2016
---SAS/STAT
        30DEC2016
---SAS/GRAPH
        30DEC2016
---SAS/Secure 168-bit
        30DEC2016
---SAS/Secure Windows
        30DEC2016
---SAS/ACCESS Interface to PC Files
        30DEC2016
---SAS/ACCESS Interface to ODBC
        30DEC2016
---SAS/ACCESS Interface to OLE DB
        30DEC2016
---SAS Workspace Server for Local Access
        30DEC2016
---High Performance Suite
        30DEC2016

如何使其工作?

我没有要引用的teradata实例,但我认为您的问题是,您没有使用引用名称创建oledb连接,然后尝试将其引用为“teradata”

试试这个:

connect to OLEDB as teradata (Provider='MSDASQL' Extended_Properties='DRIVER={Teradata};DBCNAME=SITEPRD;AUTHENTICATION=ldap' UID="&DMID" PWD="&DMPWD");

你有两个错误。首先定义了到
OLEDB
的连接,然后尝试在名为
TERADATA
的连接上执行未定义的命令。将
作为TERADATA
添加到
CONNECT
语句中,以便命名连接,或者将
EXECUTE
语句更改为使用
OLEDB
连接名称

最后的insert语句还将在SAS工作库中创建一个表。您是否希望它能够插入或读取OLEDB连接?如果要将SAS中的数据插入到Teradata表中,则需要创建指向Teradata的libref。不需要先“创建”表。SAS将很乐意为您创建表格

libname TERADATA OLEDB ... connection details ... ;
proc sort data=mysource(keep=myid_sas mydate) nodupkey out=TERADATA.idlist;
  by _all_;
run;

我完全迷路了。我没有SAS作为我检查东西的终端。因此,如果您可以编辑答案,那么如果重写,它应该如何作为teradata连接到OLEDB(Provider='MSDASQL'Extended_Properties='DRIVER={teradata};DBCNAME=SITEPRD;AUTHENTICATION=ldap'UID=“&DMID”PWD=“&DMPWD”)。创建一个易失性表并使用SAS表将其插入到两个方法中,您可能需要考虑调用技术支持。它包含在SAS的价格中,他们响应迅速,可以解决您的设置和特定问题。
libname TERADATA OLEDB ... connection details ... ;
proc sort data=mysource(keep=myid_sas mydate) nodupkey out=TERADATA.idlist;
  by _all_;
run;