从.Net中的SAS数据源读取数据

我被要求在ASP.Net应用程序中从SAS读取一些数据。 我已经为Windows Forms应用程序编写了代码。 但是相同的代码在ASP.Net中不起作用,但我可以试试。 具有相同引用的干净项目始终失败。

这是我为连接所做的事情:

SASWorkspaceManager.WorkspaceManager oWorkspaceManager = new SASWorkspaceManager.WorkspaceManager(); string xmlInfo = ""; SASWorkspaceManager.ServerDef oServerDef = new SASWorkspaceManager.ServerDef(); oServerDef.MachineDNSName = "server"; oServerDef.Protocol = SASWorkspaceManager.Protocols.ProtocolBridge; oServerDef.Port = ; oServerDef.BridgeEncryptionAlgorithm = "SASProprietary"; oServerDef.BridgeEncryptionLevel = SASWorkspaceManager.EncryptionLevels.EncryptUserAndPassword; SAS.Workspace oSASWorkspace = oWorkspaceManager.Workspaces.CreateWorkspaceByServer ("", SASWorkspaceManager.Visibility.VisibilityProcess, oServerDef, "user", "pass", out xmlInfo); oSASWorkspace.LanguageService.Submit( "proc means data = sashelp.class;output out=meanout;run;"); OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter ("select * from work.meanout", "provider=sas.iomprovider.1; SAS Workspace ID=" + oSASWorkspace.UniqueIdentifier); DataSet oDS = new DataSet(); oOleDbDataAdapter.Fill(oDS, "sasdata"); oWorkspaceManager.Workspaces.RemoveWorkspaceByUUID( oSASWorkspace.UniqueIdentifier); oSASWorkspace.Close(); 

只是因为它无法初始化数据适配器,但内部exception是“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。” 如果我在web.config文件中添加Trust = Full,我在填充数据适配器时会直接得到相同的错误。 我们可以certificate通过工作区管理器执行SAS命令是有效的,当我们尝试读取结果时,它会在初始化与SAS的连接时失败。 无论出于何种原因,片段

 OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter (, "provider=sas.iomprovider.1; SAS Workspace ID=" + oSASWorkspace.UniqueIdentifier); 

似乎在任何地方都被引用,因为如何做到这一点只是在通过ASP.Net运行时引发错误。

我猜它是一个用户权限问题,它不喜欢在IIS用户下运行,但不知道需要什么权限授予它。 某些SAS文档或其他(抱歉,找不到)建议确保用户具有权限,但ASPNET用户确实可以完全访问dev计算机上的整个SAS程序目录。 有谁知道我还需要设置什么? 谢谢。

您使用的是哪个版本的SAS? 从9.13开始,不推荐使用WorkspaceManager,而使用ObjectManagerMulti(或9.2中的ObjectManagerMulti2)。 我不确定这会解决你的错误。

是另一台机器上的asp服务器。 如果是这样,并且可能无论如何,您将需要许可SAS Integration Technologies。 有关血腥详细信息,请参阅在线文档。

在IIS中运行类似的东西时遇到了一些问题。 首先,您必须在管理工具 – >组件服务中调整SAS工作区组件的权限。 您必须为运行应用程序池的用户添加权限。 这将位于组件的属性窗口 – >安全选项卡 – >启动和激活权限以及访问权限下。

我还最终必须修改配置中的SASUSER目录,因为网络服务没有访问权限。

C:\ Program Files \ SASHome \ SASFoundation \ 9.3 \ nls \ en \ sasv9.cfg

/ * – SASUSER“?CSIDL_PERSONAL \ My SAS Files \ 9.3”* / -SASUSER“c:\ sasuser”