Sql server 更新SAS 9.1程序以连接到SQL Server DB而不是Access mdb

Sql server 更新SAS 9.1程序以连接到SQL Server DB而不是Access mdb,sql-server,sas,Sql Server,Sas,在我的工作中,有一个SAS脚本连接到Microsoft Access数据库,以将数据检索到平面文件。我的任务是将它改为连接到SQL Server数据库。我们有SAS 9.1,我无法更新版本,因为这不是我的决定。以下是连接Access数据库的代码,我已将此帖子的服务器名和文件夹名替换为通用标记: proc import out=SPONSOR datatable="SPO_LOAD_UNBLIND" dbms=ACCESS2000 replace; database="\\&l

在我的工作中,有一个SAS脚本连接到Microsoft Access数据库,以将数据检索到平面文件。我的任务是将它改为连接到SQL Server数据库。我们有SAS 9.1,我无法更新版本,因为这不是我的决定。以下是连接Access数据库的代码,我已将此帖子的服务器名和文件夹名替换为通用标记:

proc import out=SPONSOR 
   datatable="SPO_LOAD_UNBLIND"
   dbms=ACCESS2000 replace;
   database="\\<Server>\<Folder>\<Subfolder>\PROCESS.mdb";
   memosize=2048;
run;
我需要做什么才能将其连接到名为DM_c000的SQL Server数据库,该数据库的表名与Access数据库SPO_LOAD_UNBLIND中的表名相同?

这最终起到了作用:

proc sql;
   connect to odbc (dsn=<dsn>  user=<userid> pwd=<password>);
   create table SPONSOR as select * from connection to odbc(select * from <database>.<schema>.<table>);
quit ;
这最终奏效了:

proc sql;
   connect to odbc (dsn=<dsn>  user=<userid> pwd=<password>);
   create table SPONSOR as select * from connection to odbc(select * from <database>.<schema>.<table>);
quit ;

或者,您可以通过ODBC使用libname连接到SQL Server数据库的所有当前表

* WITH DSN; 
libname mydata odbc datasrc="DSN Name" user="username" password="password";

* WITH DRIVER (change driver name to your current installation);
libname mydata odbc complete="driver=SQL Server; Server=servername; 
                    user=username; pwd=password; database=databasename;";

请注意,对SAS中的表所做的更改会影响实时数据库表。此外,删除整个库会删除数据库中的所有表,而不是数据库本身。相反,请确保取消分配libname。

或者,您可以通过ODBC使用libname连接到SQL Server数据库的所有当前表

* WITH DSN; 
libname mydata odbc datasrc="DSN Name" user="username" password="password";

* WITH DRIVER (change driver name to your current installation);
libname mydata odbc complete="driver=SQL Server; Server=servername; 
                    user=username; pwd=password; database=databasename;";

请注意,对SAS中的表所做的更改会影响实时数据库表。此外,删除整个库会删除数据库中的所有表,而不是数据库本身。相反,请确保取消分配libname。

这不是编程问题。通过控制面板>ODBC连接为初学者在计算机上设置DSN条目。然后通过libname连接,您就可以访问该表了。我对SAS不太熟悉,所以我不知道该怎么做。此外,此脚本将由来自不同计算机的不同用户运行,因此我的本地计算机上的DSN不起作用。@Reeza这类问题通常是关于堆栈溢出的主题,只要它不是太面向服务器的ie,如果程序员可能不得不这样做,因为我已经做过很多次了,所以我确信这是真的。@JeffK627您需要检查您的许可证-如果您不通过OLEDB/ODBC连接到ACCESS和SQL SERVER,则它们可能是不同的许可证,而您在上面没有这样做。你可能会用到3到4个。您能检查PROC SETINIT并查看您是否有对SQL SERVER的SAS/访问权限、对OLEDB的SAS/访问权限和/或对ODBC的SAS/访问权限吗?那么,Joe,如果您已经做了很多次,我该怎么做;我听说我们有这个权限。有人说可能是proc sql?这不是编程问题。通过控制面板>ODBC连接为初学者在计算机上设置DSN条目。然后通过libname连接,您就可以访问该表了。我对SAS不太熟悉,所以我不知道该怎么做。此外,此脚本将由来自不同计算机的不同用户运行,因此我的本地计算机上的DSN不起作用。@Reeza这类问题通常是关于堆栈溢出的主题,只要它不是太面向服务器的ie,如果程序员可能不得不这样做,因为我已经做过很多次了,所以我确信这是真的。@JeffK627您需要检查您的许可证-如果您不通过OLEDB/ODBC连接到ACCESS和SQL SERVER,则它们可能是不同的许可证,而您在上面没有这样做。你可能会用到3到4个。您能检查PROC SETINIT并查看您是否有对SQL SERVER的SAS/访问权限、对OLEDB的SAS/访问权限和/或对ODBC的SAS/访问权限吗?那么,Joe,如果您已经做了很多次,我该怎么做;我听说我们有这个权限。有人说这可能是proc sql?无耻的插件,但我在Github页面上维护连接到文件级数据库MS Access、SQLite和服务器级数据库MySQL、sql server。不仅是SAS,还有其他编码语言:Python、PHP、R和VBA.Heameless plug,但我在我的Github页面上维护连接到文件级数据库MS Access、SQLite和服务器级数据库MySQL、SQL server。不仅仅是SAS,还有其他编码语言:Python、PHP、R和VBA。