【问题标题】:SAS libname syntax to connect to SQL Server via ODBC通过 ODBC 连接到 SQL Server 的 SAS libname 语法
【发布时间】:2015-11-03 05:41:52
【问题描述】:

我已经用谷歌搜索了几天,但无法正常工作。

我正在使用 SQL 2014 和 Adventureworks 数据库。

我有 SAS 9.3。

我尝试了不同的 ODBC 设置,例如设置默认数据库、使用 Windows 登录或 SQL 登录。不同的驱动程序。仍然没有,使用完整且无提示:

libname mylib odbc complete='TrustedConnection=True;DSN=test2;SERVER=MYSERVER\SQLEXPRESS;DATABASE=AdventureWorks2012;'stringdates=yes;
proc print data=mylib.Person;

错误信息:

注意:Libref MYLIB 已成功分配如下: 引擎:ODBC 物理名称:test2

注意 49-169:带引号的字符串后面的标识符的含义在未来的 SAS 版本中可能会发生变化。 在带引号的字符串和后续标识符之间插入空格是 推荐。

注意:SAS 系统因错误而停止处理此步骤。 注意:使用的 PROCEDURE PRINT(总处理时间): 实时 5.48 秒 cpu时间0.34秒

700 proc 打印数据=mylib.Person; 错误:文件 MYLIB.Person.DATA 不存在

我尝试过使用Person.Person 并在连接字符串中使用schema=Person

但是,如果我使用以下内容,它会起作用。我把默认数据库放在了 ODBC 中:

proc sql;
   connect to odbc as mycon
   (required = "dsn=awlt32;uid=sa;password=mypassword");
   select *
   from connection to mycon
      (select *
      from Person.Person);

disconnect from mycon;
quit;

我知道这是一个超级简单的问题,但无论我找到什么示例代码,我似乎都无法让它发挥作用。提前致谢。

【问题讨论】:

  • NOTE 49-169 如果在 stringdates=yes 之前放置一个空格,则应该会消失
  • 任何想法:700 proc print data=mylib.Person;错误:文件 MYLIB.Person.DATA 不存在
  • 如果您运行proc contents data=mylib._all_;,您会看到任何表格吗?我不知道冒险作品。您是否需要在 libname 语句中添加架构名称?
  • 您的引号好像结束得太早了? Stringdate 应该在连接字符串后面加上引号和分号。还可以尝试添加 schema=dbo 并注意表名区分大小写。
  • 搞定了。 schema=Person 是正确的,但我从未在 libname 语句中尝试过它,而是在 " " 连接字符串之外。哎呀。都修好了。谢谢大家。

标签: sql sas sql-server-2014


【解决方案1】:
  1. 将数据库连接添加到您的 ODBC 驱动程序;您将需要在您的 libname 中包含此连接的名称,
  2. 使用下面的 libname 并更新 datasrc、sql 用户和密码

LIBNAME mylib ODBC DATASRC=name from step1 SCHEMA=dbo USER=sql user PASSWORD="xxx" ;

proc datasets lib=mylib ;
quit;

【讨论】:

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