繁体   English   中英

如何创建与SAS的ODBC连接?

[英]How can I create an ODBC connection to SAS?

我正在编写一个需要访问SAS数据的程序。 我已经下载了SAS的ODBC驱动程序并安装了它们,但我需要能够以编程方式动态创建ODBC连接。 以下代码(在Python中)似乎应该工作:

import ctypes

ODBC_ADD_DSN = 1        

def add_dsn(name, driver, **kw):
    nul, attrib = chr(0), []
    kw['DSN'] = name
    for attr, val in kw.iteritems():
        attrib.append('%s=%s' % (attr, val))

    return ctypes.windll.ODBCCP32.SQLConfigDataSource(0, ODBC_ADD_DSN, driver, nul.join(attrib)) == 1

print add_dsn('SAS Test', 'SAS', description = 'Testing SAS')

但它会弹出SAS ODBC配置对话框,设置数据源名称,并等待用户输入信息并关闭对话框。 我怎么能避免这种情况?

为了获得对SAS数据的ODBC访问,您需要连接到某种运行的SAS会话; 您无法使用SAS ODBC驱动程序直接访问SAS数据表文件。

请参阅SAS ODBC驱动程序指南 ,“我需要什么软件?”部分。

您的问题并未声明您正在尝试通过正在运行的SAS产品访问SAS数据。 SAS ODBC驱动程序指南应该告诉您如何根据要进行连接的SAS产品设置连接。

我知道这个问题很古老,但它可能经常出现,我将分享我所知道的答案。 实现您要做的事情的最简单方法是创建所谓的“DSN-Less Connection”。

简而言之,您创建了一个在打开连接时使用的连接字符串,用于标识驱动程序并包含您在为该驱动程序创建DSN时通常填写的所有参数。

这项技术已经存在了很长时间 - 我在2001年使用它,它比它更老。

以下是一系列用于通过ODBC访问SAS数据的DSN-Less连接字符串示例:

使用Server ID Provider=sas.ShareProvider;Data Source=shr1;

SAS / SHARE使用服务器ID和节点(网络名称)Provider = sas.ShareProvider; Data Source = shr1; Location = lambchop.unx.sas.com;

SAS / SHARE指定用户和密码Provider=sas.ShareProvider;Data Source=shr1;Location=lambchop.unx.sas.com; User ID=myUsername;Password=myPassword; Provider=sas.ShareProvider;Data Source=shr1;Location=lambchop.unx.sas.com; User ID=myUsername;Password=myPassword;

SAS / SHARE服务器需要密码Provider=sas.ShareProvider;Data Source=shr1;Location=lambchop.unx.sas.com; User ID=myUsername;Password=myPassword; SAS Server Access Password=myServerPassword; Provider=sas.ShareProvider;Data Source=shr1;Location=lambchop.unx.sas.com; User ID=myUsername;Password=myPassword; SAS Server Access Password=myServerPassword;

这些来自: https//www.connectionstrings.com/sas-share/

SAS支持页面更多地讨论了这个问题 - 我在这里找到了它: http ://docslide.us/documents/opening-an-ado-connection-object.html

我知道zilch关于SAS,但用于在ODBC中动态连接数据库的函数是SQLDriverConnect 您不需要(或想要)添加DSN,只需安装驱动程序即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM