是否可以在不使用ODBC的情况下通过SAS连接到SQL Server?
如果回答是,您可以举一个如何做的代码示例吗?
答案 0 :(得分:1)
OleDb。这些是您的两个选择。您还可以使用Web服务来管理SQL Server数据库,并使用PROC HTTP或PROC SOAP(首选项为REST / JSON)。对于直接访问,您需要用于SQL Server,ODBC或OleDB的SAS Access引擎。
答案 1 :(得分:1)
是的,有可能。您可以以libname或proc sql的形式进行操作。我建议上传时使用insertbuff-option。只需确保未引用您的用户名,密码和服务器,例如在oleDb连接中。
libname My_libname odbc noprompt =
"DRIVER=SQL Server; server=&server.; Uid=&userName.;Pwd=&password.; DATABASE=&Database.;"
INSERTBUFF=32767;
第二种方法是
proc sql;
connect to odbc as my_conn
(noprompt = "DRIVER=SQL Server; server=&server; Uid=&user.; Pwd=&password.; DATABASE=&database.;");
create table Query_result as
select * from connection to my_conn (
select * from table_in_server_database
);
quit;
有关更多信息,您可以阅读SAS support page
答案 2 :(得分:1)
尽管这在技术上使用ODBC / OLEDB,但是您不需要SAS许可...编写一个VBScript(可能会接收从SAS传递来的参数),然后使用系统ODBC / OLEDB驱动程序将其连接到您的数据源,并执行查询,并返回分隔记录。
然后通过管道文件执行上述VBScript,将记录读入SAS。
我经常针对多个数据源(Informix,SQL Server,DB2,MSAccess / Excel)执行此操作。
答案 3 :(得分:0)
我无法评论Chris J的回答,但这是一个很棒的主意。我会对其进行一些修改(建议)。跳过VBScript,因为它已过时并且在很多地方都不允许使用。使用.NET Core / C#和实体框架。 EF是完整的ORM,易于使用,并且会自动神奇地发现那里几乎每个数据库上的整个数据库结构。使用内存缓冲区将数据流送回。
就像克里斯的答案,只是将其更新为更现代的机制。由于这是解决问题的巧妙方法,因此必须尝试一下。