SAS Access /与SQL Server的接口

时间:2018-01-15 09:58:10

标签: sql-server sas

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

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

  1. 以下是运行Proc Setinit后的产品许可证
  2.   

    操作系统: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
    2. 后安装的产品
        

      16 proc Product_Status;运行;

      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服务器吗?

      我也在尝试连接这些代码并且所有错误都得到了解决。我应该使用哪个代码方向? ODBC或sqlsvr?

      我试过sqlsvr并收到此错误消息

      代码:

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

      错误:

        

      LIBNAME database1 sqlsvr user = datareader password = XXXXXXX   DATASRC =客户端A;

           

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

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

      代码:

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

      错误:

        

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

           

      错误:找不到ODBC引擎。错误:LIBNAME出错   言。

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

      非常感谢你!

1 个答案:

答案 0 :(得分: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将成为所有程序和用户将使用的单一网关,编码人员和分析人员不必陷入连接细节中。