Как я могу создать соединение ODBC с SAS? - PullRequest
7 голосов
/ 01 марта 2010

Я пишу программу, которая должна получить доступ к данным SAS. Я скачал драйверы ODBC для SAS и установил их, но мне нужно иметь возможность создавать соединения 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, задает имя источника данных и ждет, когда пользователь введет информацию и закроет диалоговое окно. Как я могу избежать этого?

Ответы [ 3 ]

3 голосов
/ 11 марта 2010

Чтобы получить ODBC-доступ к данным SAS, вам необходимо подключиться к работающему сеансу SAS какого-либо типа; Вы не можете получить доступ к файлам таблицы данных SAS напрямую с помощью драйверов SAS ODBC.

См. Руководство по драйверам SAS ODBC , раздел «Какое программное обеспечение мне нужно?».

В вашем вопросе не указано, что вы пытаетесь получить доступ к данным SAS через работающий продукт SAS. В руководстве по драйверам SAS ODBC должно быть указано, как настроить соединение на основе продукта SAS, через который вы будете устанавливать соединение.

1 голос
/ 20 сентября 2015

Я знаю, что этот вопрос древний, но, вероятно, он возникает достаточно часто, и я поделюсь ответом, который знаю. Самый простой способ добиться того, что вы пытаетесь сделать, - создать так называемое «соединение без DSN».

Вкратце, вы создаете строку соединения, которую вы используете при открытии соединения, которая идентифицирует драйвер и включает в себя все параметры, которые вы обычно вводите при создании DSN для этого драйвера.

Этот метод существует очень давно - я использовал его в 2001 году, и он старше этого.

Вот серия примеров строк подключения DSN-Less для доступа к данным SAS через ODBC:

Использование идентификатора сервера Provider=sas.ShareProvider;Data Source=shr1;

SAS / SHARE Использование идентификатора сервера и узла (имя сети) Provider = sas.ShareProvider; Источник данных = shr1; Местоположение = 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

0 голосов
/ 11 марта 2010

Я знаю о SAS, но функция, используемая для подключения к базе данных на лету в ODBC: SQLDriverConnect . Вам не нужно (или не нужно) добавлять DSN, вам просто нужно установить драйверы.

...