【问题标题】:Connect SAS to a Microsoft SQL Server database将 SAS 连接到 Microsoft SQL Server 数据库
【发布时间】:2023-03-16 17:41:01
【问题描述】:

我想将 SAS 连接到 Microsoft SQL Server 数据库,但没有成功。

我已经有一个使用 NT 身份验证的数据库连接。

例如,当我想将 R(统计软件)连接到数据库时,我会这样做

ch_db

但是当我在 SAS 中这样做时,它不起作用:

LIBNAME sql ODBC DSN='sql_nt';

我有这个错误信息:

错误:未分配 Libname SQL。错误:LIBNAME 中的错误 陈述。错误 22-7:无效的选项名称 SQL_NT。

我可能犯了一个愚蠢的错误,但我没有看到它。

【问题讨论】:

    标签: sql sql-server sas


    【解决方案1】:

    在 SAS 中与 SQL SERVER 建立 ODBC 连接; 首先使用Windows ODBC 数据源管理器创建一个用户 DSN。我使用 SQL Server Native Client 和默认值。

    然后在 SAS 中执行以下语句

    libname mySasLib odbc datasrc='myUserDSN';
    

    或者,从 SAS Explorer 窗口 GUI,选择 New 以调用 New Library 对话框。

    请注意,您计算机上的 DSN 源将列在 数据源 下拉列表中。

    用户 ID、密码和选项字段是可选的,对于 Windows 集成安全性来说留空。

    ;

    SUBSEQUENTLY--获得 SQL pass-through 的强大功能--这是在 Work 中创建虚拟视图的语法;这对我的情况来说是一个令人难以置信的性能提升。

    proc sql;
    connect to ODBC as mycon (datasrc='myUserDSN');
    create view one as
    select colA, colB from connection to mycon
    (select colA, colB from tableInDataSrc order by colA);
    disconnect from mycon;
    quit;
    

    然后是这样的:

    proc univariate data=one;
    by colA;
    histogram colB;
    run;
    

    【讨论】:

      【解决方案2】:

      看看这个页面: http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001355231.htm

      具体来说,我认为你应该这样尝试:

      libname mydblib odbc user=testuser password=testpass datasrc=mydatasource;
      

      通常您应该在连接到 SQL 服务器时提供用户名和密码。我假设您已经验证了 ODBC 连接设置正确(例如使用 R 进行测试)。

      从 cmets 编辑: 如果您使用的是 NT 身份验证,请按照此处的说明进行操作:(来自http://support.sas.com/techsup/technote/ts802.pdf

      libname odbclib odbc noprompt="dsn=sql_NT;Trusted_Connection=yes" 
      schema=DBO; 
      

      我怀疑只是 dsn="stuff" 的旧样式不适用于新版本 - 虽然我只使用 OLEDB,所以我不能 100% 确定。

      【讨论】:

      • 我使用的是 NT 身份验证,所以我不必使用“用户”和“密码”。关于 ODBC 连接,它适用于 R,所以我认为它设置正确
      • 希望加入 NT 身份验证。
      • 如果使用 Windows 集成安全性(也称为 NT 身份验证),只需省略此答案中第一个 libname 语句中的 userpassword 选项。跨度>
      【解决方案3】:

      我尝试使用 proc sql 语句和 libname 格式进行连接。后者似乎对用户更友好,这里有一个例子:

        LIBNAME testLib ODBC DSN='sqlserver' user=userID pw=xxxxxxxx schema=dbo;
        title 'Testing Libname Option';
        proc contents data= testLib.mytable;
        proc print data=testLib.mytable(obs=10); 
      

      UserID 和 PWD 需要来自您的 ODBC 连接设置。

      【讨论】:

        【解决方案4】:

        我是 SAS 新手,浪费了很多时间尝试创建“用户 DSN”。 谢天谢地,我咨询了公司的管理团队。 一位 SAS 管理员回复了 “DSN 在 SAS 服务器端配置” 她请求了“MSSQL 数据库和 SAS 服务器名称”并为我创建了 DSN。

        一旦建立连接,我就使用下面的查询

        (P.S : 我用的是windows认证)


        LIBNAME sql odbc = 'xxxxxx' ;
        LIBNAME myfolder 'xxxxxxxxxxxxxxxx' ;
        
            proc sql;
                create table sql.target_table as select * from myfolder.mydata ;
            quit;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多