【问题标题】:SAS Access/Interface with SQL serverSAS 访问/与 SQL 服务器的接口
【发布时间】:2018-06-23 22:36:11
【问题描述】:

我在连接到 SQL 数据库中的数据时遇到问题。

我不确定我是否没有特定的驱动程序,或者我使用的代码是否不正确。有人可以帮助指导我正确的方向吗?

  1. 下面是我运行 Proc Setinit 后的产品许可证

操作系统:WX64_WKS。

产品有效期:

---Base SAS Software
14FEB2018
---SAS/STAT
14FEB2018
---SAS/GRAPH
14FEB2018
---SAS/Secure 168-bit
14FEB2018
---SAS/Secure Windows
14FEB2018
---SAS Enterprise Guide
14FEB2018
---SAS/ACCESS Interface to PC Files
14FEB2018
---SAS/ACCESS Interface to Microsoft SQL Server
31DEC2017
---SAS Workspace Server for Local Access
14FEB2018
---SAS/ACCESS to Amazon Redshift
31DEC2017
---High Performance Suite
14FEB2018
  1. 下面是我运行 Proc Product_Status 后安装的产品

16 过程产品状态;运行;

For Base SAS Software ...
Custom version information: 9.4_M5
Image version information: 9.04.01M5P090617
For SAS/STAT ...
Custom version information: 14.3
For SAS/GRAPH ...
Custom version information: 9.4_M5
For SAS/ACCESS to Amazon Redshift ...
Custom version information: 9.42
For High Performance Suite ...
Custom version information: 2.2_M6
For SAS/ACCESS Interface to PC Files ...
Custom version information: 9.4_M5
NOTE: PROCEDURE PRODUCT_STATUS used (Total process time):
real time 0.24 seconds

好像没有安装sas访问SQL server吧?

我也在尝试使用这些代码进行连接,但都出现了错误。我应该使用哪个方向的代码? ODBC 还是 sqlsvr?

我尝试了 sqlsvr 并收到此错误消息

代码:

LIBNAME database1 sqlsvr user=datareader password=myspassword DATAsrc=clientA;

错误:

LIBNAME database1 sqlsvr 用户=datareader 密码=XXXXXXX DATAsrc=clientA;

错误:尝试建立连接的 CLI 错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且没有默认驱动程序 指定的错误:LIBNAME 语句中的错误。

当我尝试 ODBC 路由时,我收到了这条消息

代码:

LIBNAME database1 ODBC DSN=clientA User=datareader Password=myspassword ;

错误:

LIBNAME database1 ODBC DSN=clientA User=datareader Password=XXXXXXX;

错误:找不到 ODBC 引擎。错误:LIBNAME 中的错误 声明。

有人可以指出我正确的方向吗? DSN 应该是每个客户端的数据库名称,如“ClientA”等,还是应该是服务器的名称?

非常感谢!

【问题讨论】:

  • 我认为您的说法是正确的,因为它没有出现在 PRODUCT_STATUS 报告中,因此可能未在您的计算机上安装 SAS/Access to ODBC。解决此问题后,我们可以协助您正确设置。

标签: sql-server sas


【解决方案1】:

SQLSRV 库引擎 DATASRC= 选项应指定“ODBC 数据源管理器(64 位)”应用程序中显示的条目。您可以添加条目、设置(配置)连接参数并测试连接。假设您将新的 DSN 命名为 Sales History,则 libname 可能是

libname OldSales sqlsrv datasrc="Sales History" user=... pass=...;

如果想要直接在 SAS 代码中指定服务器名称、架构、端口、连接持久性等,您可以使用 NOPROMPT= 选项。选项值将是一个分号分隔的名称=值对列表:

libname OldSales sqlsrv user=... pass=... noprompt="Server=<url or hostname><\instance-name-if-other-than-default>,<port-number-if-other-than-default>;Initial Catalog=<database-to-use-if-other-than-default>;..other connection parameters..";

Microsoft 文档"Using Connection String Keywords with SQL Server Native Client" 是一个很好的参考。另一个很好的示例资源是connectionstrings 网站。 NOPROMPT= 值看似正确,但不起作用,可能有或需要不寻常的间距或引号。

对于静态数据托管环境中的一小部分编码人员,NOPROMPT= 方法可能没问题,并且在大型组织中不需要额外的支持(访问权限除外)。如果数据托管迁移或更改,您的 SAS 代码将不得不更改。

在更大的环境中,尤其是在 SAS 服务器环境中,最好让 IT 支持来创建 SAS 会话所需的 DSN。 DSN 将成为所有程序和用户都将使用的单一网关,编码人员和分析人员不必陷入连接细节的困境。

【讨论】:

  • 嗨,理查德,非常感谢您的回复。我尝试使用您提供的代码,但仍然出现此错误。这是否意味着我没有正确设置 ODBC?错误:尝试建立连接的 CLI 错误:[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称并且未指定默认驱动程序错误:LIBNAME 语句中的错误。
  • 当我在 SAS 中处理连接字符串时遇到问题时,我有时会使用 Excel、Get Data/From Other Source 来测试 ODBC 连接。 SASTRACE 选项可以帮助解决问题。 SAS 还为您的许可证提供强大的技术支持。我建议您在 support.sas.com 上与他们一起打开一个轨道
  • 您需要在答案中提到的应用程序 Richard 中设置 ODBC 连接,在 SAS 之外,然后才能运行这些库名称。
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 2015-06-28
  • 2017-05-12
相关资源
最近更新 更多