2010-03-01 92 views
4

我在寫一個需要訪問SAS數據的程序。我已經下載了SAS的ODBC驅動程序並安裝了它們,但我需要能夠以編程方式實時創建ODBC連接。下面的代碼(在Python)好像它應該工作:如何創建與SAS的ODBC連接?

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配置對話框,設置數據源名稱,並等待用戶輸入的信息並關閉該對話框。我怎樣才能避免這種情況?

回答

2

爲了獲得對ODBC數據的ODBC訪問,您需要連接到正在運行的SAS會話;您無法直接使用SAS ODBC驅動程序訪問SAS數據表文件。

請參閱SAS ODBC drivers guide,「我需要什麼軟件?」一節。

您的問題沒有說明您嘗試通過正在運行的SAS產品訪問SAS數據。 SAS ODBC驅動程序指南應該告訴您如何根據您要建立連接的SAS產品建立連接。

0

我知道關於SAS的zilch,但是用於在ODBC中動態連接數據庫的函數是SQLDriverConnect。您不需要(或不想)添加DSN,只需要安裝驅動程序。

0

我知道這個問題是古老的,但它可能經常足以讓我分享我所知道的答案。實現你所要做的最簡單的方法是創建所謂的「無DSN連接」。

簡單地說,你創建你打開一個連接,即識別出駕駛員和包括你通常會填寫在創建該驅動程序DSN的所有參數時使用連接字符串。

這項技術已經存在了很長一段時間 - 我在2001年使用它,並且比這更老。

這裏是通過ODBC訪問SAS數據的一系列樣品DSN的連接字符串:

使用服務器ID Provider=sas.ShareProvider;Data Source=shr1;

SAS/SHARE 使用服務器ID和節點(網絡名稱) 提供商= 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;

SAS/SHARE 服務器需要密碼 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