即使安装了 OLEDB,与 SQL 服务器的 SAS dsnless 连接也无法正常工作

SAS dsnless connection to SQL server not working even if OLEDB is installed

我正在尝试设置与 SQL 服务器的无 DSN 连接,如下所示:

libname sqwireno sqlsvr noprompt='Driver=SQLServer;Address=TOCGDMS,1433;Database=DMS1;
       UID=s11111;PWD=Test;' schema=dbo;

错误:找不到 SQLSVR 引擎。 错误:LIBNAME 语句错误。

我在 windows 上使用 SAS 9.4,并已验证安装了 SAS Access to OLEDB。

我做错了什么

在 Windows 环境中,SAS 等客户端可以与关系数据库建立 OLEDB 和 ODBC 连接 (two distinct APIs)。 SAS/ACCESS 使用 libname 支持需要安装这些特定功能的两种形式(检查:proc setinit; run;)。以下是无 DSN 连接的示例,但所有三个都支持 DSN(数据源名称):

ODBC (需要安装'SQL Server'或其他驱动程序)

libname sqldata odbc noprompt="driver=SQL Server; Server=servername; user=username; 
                               pwd=password; database=databasename" schema=myschema;

OLEDB (需要安装 'SQLOLEDB' 或其他供应商)

libname sqldata oledb user=username password=password datasource=servername schema=myschema
                      provider=sqloledb properties=('initial catalog'=databasename);

请注意:Microsoft 允许免费下载 'MSOLEDBSQL' 的最新 ODBC driver and OLEDB provider for SQL Server (where 'SQLOLEDB' is now deprecated


此外,SAS 支持 SQL 服务器引擎连接,它可能提供比上述两个针对 any 通用的接口更具体的 MSSQL 功能数据库或数据源:

SQLSERV (使用 SAS ODBC 驱动程序)

libname mssql sqlsvr noprompt="driver={SAS ACCESS to SQL Server}; server=servername; 
                               database=databasename; uid=username; pwd=password" schema=myshema;

事实上,您的连接可能会使用适当的标点符号,例如 Driver 参数中的 {...}

libname sqwireno sqlsvr noprompt="Driver={SQL Server};Server=TOCGDMS,1433;Database=DMS1;    
                                  UID=s11111;PWD=Test;" schema=dbo;