只读SAS视图(双击也是如此)

时间:2018-03-01 01:01:51

标签: view sas locking

我们有SAS数据集,许多人都可以访问这些数据集进行读写。很多时候用户点击这些表并打开。表被锁定。为了避免这个问题,我尝试在同一个库中创建视图,如果人们双击它打开的视图表并再次锁定表。

我正在考虑使用access = read only选项在新库中创建视图的一种解决方案。

是否有只读视图选项,其中有人双击并且表不会锁定表。是否可以在同一个库中创建此视图。

3 个答案:

答案 0 :(得分:1)

我还必须在没有SAS / SHARE的环境中处理这个问题。我的解决方案是编写一个定期运行的批处理作业,执行以下操作:

  1. 将日志转移到文本文件。
  2. 尝试使用lock语句锁定表。
  3. 如果成功,立即释放锁定。
  4. 使用数据步骤解析日志文件。
  5. 提取锁定表格的任何人的用户名。
  6. 向表格的所有用户发送电子邮件,通知他们用户X正在锁定它。
  7. 对表的更新每个只需要几分之一秒,所以虽然有可能抓住某人进行合法更新(或阻止他们这样做),但这种可能性很小。

答案 1 :(得分:1)

我建议最好的解决方法是创建一个简单的“数据查看器”Web应用程序。如果你有一个中间层和一个存储过程服务器,那么你已经准备好了,如果你有基本的javascript / html知识,它应该只有几个小时。

我在此sgf paper中编写了使用SAS构建网络应用的详细指南,并在此blog post中提供了快速摘要。

困难的部分是说服您的用户使用网络应用程序而不是客户端工具来阅读数据!

从长远来看,最好避免使用SAS数据集,而是使用实际的数据库。

答案 2 :(得分:0)

您可以在同一个库中为这些数据集创建视图,但是将它们保存到新的SAS文件夹中,并为用户提供对该文件夹的唯一访问权限。观点。并教育您的用户有关SAS表锁的信息,以便他们看到锁定错误时不会被推迟。

如果您希望用户能够写入这些表,那么我建议您使用控制框架或流程。

示例流程:

  • 用户必须提交他们的代码或他们想要添加/编辑的数据,
  • 作为管理员,您可以每周或每天批量应用这些更改。

示例控制框架工作: 应使用存储过程

编辑/写入所有表
  • 创建存储进程,在编辑/写入表之前检查表锁,
  • 用户将使用SP写入表格
  • 如果两个用户同时运行同一个SP:要运行的第二个SP将看到锁定标志并向用户打印一条消息,以便在几分钟内再次运行SP。