首页 > 解决方案 > SAS 9.3 将一个服务器上的特定表的访问权限授予另一个用户上的用户

问题描述

我有 2 台 SAS 9.3 服务器 Server-A 和 Server-B,它们有单独的库、数据集和用户。

SERVER A 上名为 LIB_A 的库中有五个表:A1 A2 A3 A4 A5

我只想与来自服务器 B 的另一个用户共享数据集 A3。

A3 是一个动态表,所以我决定用它制作一个名为 V_A3 的 SAS 视图,并将其存储在一个名为 LIB_B 的新库中。

PROC SQL;
CREATE VIEW LIB_B.V_A3 AS
SELECT * FROM LIB_A.A3;
QUIT;
RUN:

如何与来自服务器 B 的用户共享位于库 LIB_A 中服务器 A 上的 V_A3 SAS 视图?

我试图在服务器 B 上创建一个新库,并将路径分配为 LIB_B 的主文件夹(\SERVER B\LIB_B)的网络共享。

用户看到库和视图,但视图产生错误并且未显示数据。可能是因为创建视图的代码引用了外部资源,例如

 SELECT * FROM LIB_A.A3

在不创建视图的情况下,如何保持数据源动态?

在服务器 B 上,如果我创建一个使用服务器 A 上原始文件夹路径的 SAS BASE 库;

\服务器 A\LIB_A

用户看到所有五个表:A1、A2、A3、A4、A5。

但我希望他只看到表 A3。如果我能做到这一点,就不需要创建视图。

我怎样才能让它工作?我的服务器在 Windows 和 SAS 9.3 T1M1 上。

标签: sas

解决方案


简单的答案是在表级别而不是在文件夹级别授予权限。无论您是使用 SAS 元数据服务器来管理权限,还是使用 Windows,都是如此。

在 SAS Metadata Server 中,您可以为 创建一个 ACT deny(无读取访问权限)ServerBUsers,然后您可以为 单独创建另一个 ACT permit(读取访问权限)ServerBUsers。然后,将denyACT 应用于\ServerA\LibA,并将permitACT 应用于\ServerA\LibA\TableA3

Windows 权限的工作方式大致相同,您的 Windows 权限必须至少与您的 SAS 权限一样宽松,否则用户会收到烦人的消息。如果您愿意在 SAS 中处理权限,那么只需授予对整个文件夹的读取权限;但如果没有,您可以创建类似于上述 ACT 的 Windows AD 组,然后让 SAS 使用这些 Windows AD 组来定义 SAS 用户组,然后这些用户组对各种文件/文件夹具有权限或没有权限。


推荐阅读