安全资源描述在GP 2016和GP 2018中的视图

SQL Server.

最近,我们的客户之一升级到Microsoft Dynamics GP 2018并遇到了一个问题,视图不再工作。他们在智能列表中使用了一个视图,以显示为Dynamics GP公司中分配给每个用户的安全角色,安全资源详细信息和任务。但是,在升级后,即使在使用下面的文章中提供的步骤以清除数据以填充该数据而不再填充此视图 SY09400资源描述表。

 

风景

2010年,维多利亚yudin写了一个 文章 介绍如何使用安全资源详细信息创建SQL视图。在文章中,维多利亚还介绍了如何在Dynamics GP中使用明确的数据维护来填充SQL中的SY09400表,该表是包含动态GP的系统资源详细信息的表

此前还提到了这些步骤 Microsoft KB 951229。

 

问题

正如它所发生的那样,在动态GP 2016和Dynamics GP 2018中,清除数据不再填充以前的所有系统资源信息。它只填充Windows,报告,视图和存储过程的Sy09400表中的资源描述。它不会填充其他资源的资源描述,例如系列发布权限,智能列表选项或表。

 

如何添加旧资源描述?

幸运的是,我对Dynamics GP 2010进行了测试安装,其中我能够在GP 2010中运行清晰的数据维护,以填充Sy09400表,其中包含所有GP 2010资源描述。

我在SQL Management Studio中运行以下SQL脚本,以进行动态GP 2010安装并将数据复制到Excel中。 Excel电子表格具有除Windows(Secrestype = 2)之外的所有资源描述,报告(secrestype = 23),视图(secrestype = 57)和存储过程(secrestype = 58)。

SELECT * FROM DYNAMICS..SY09400 WHERE SECRESTYPE NOT IN (2, 23, 57, 58)

我突出显示结果的所有行和列,并将Ctrl + C复制。然后我进入了一个空的Excel电子表格,然后单击Ctrl + v以将数据粘贴到Excel中。接下来,我保存了Excel工作簿。

在Dynamics GP 2018中,我在系统资源描述表上使用了清晰的数据维护来填充SY09400表。这是距离的步骤 维多利亚的文章:

  1. 转到Microsoft Dynamics GP> Maintenance > Clear Data
  2. 单击工具栏上的“显示”,然后单击“物理”
  3. 选择序列下的系统
  4. 单击表下的安全资源描述以突出显示它,然后单击“插入”以将其添加到所选表列表中
  5. 单击确定,然后对弹出消息询问您是否确定要清除表中的数据
  6. 将报告发送到屏幕,它应该报告回并没有找到错误'

接下来,我在DynamCIS GP 2018安装中创建了一个新的SQL表,以保持额外的资源描述。为此,我运行了以下脚本。

SELECT * INTO DYNAMICS..CA_ResourceDescriptions from DYNAMICS..SY09400

该脚本在Dynamics数据库中创建了名为ca_resourcedesictions的新表。它包含表SY09400中的Windows,报告,视图和存储过程的所有资源描述。然后,我使用以下SQL脚本从新表中删除了所有数据。

DELETE DYNAMICS..CA_ResourceDescriptions

删除所有数据后,我需要删除动态GP 2018中存在的表中存在的列中的一个列,但不存在于动态GP 2010中。为此,我单击了动态数据库中CA_ResourceScriptions表上的加号上的加号要打开列列表,请右键单击Availlmtdusrs列,然后单击“删除”(注意 - 请确保在新的CA_ResourceScriptions表中执行此操作,而不是在Sy09400表中)。

安全资源

接下来,我将使用Excel电子表格的数据填充新表。

我打开了从动态GP 2010中的Sy09400数据创建的Excel文件,然后通过小区J3168突出显示来自单元格A2的小区 - 除了标题行中的所有单元格。然后ctrl + c复制数据。

在SQL Management Studio中,在Dynamics GP 2018安装中,我右键单击了CA_ResourceDescription表,然后单击编辑Top 200行。

安全资源

查询将显示包含所有空值的1行,因为目前表中没有数据。单击标题左上角的单元格,以便选择所有信息,然后右键单击并选择粘贴。

安全资源

糊状过程花了几分钟才完成。它甚至似乎导致错误,但它最终将所有数据粘贴到表中。最终结果如图所示,3168在窗口底部的数字或行中显示。

安全资源

现在我需要改变已经在数据库中的安全视图,因为它已在升级之前使用。如果您在系统中尚未进行视图,则可以创建视图而不是更改它。我使用了维多利亚在她的博客中显示的观点,但需要将其更改为添加我创建的新表的详细信息。视图如下所示,黄色突出显示的变化。 笔记–请注意,我在Sy09400表和新CA_ResourcesDescription表之间创建了一个工会。

USE [DYNAMICS]
GO

/****** Object:  View [dbo].[view_Security_Details]    Script Date: 6/21/2018 11:27:34 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


ALTER VIEW [dbo].[view_Security_Details] as
SELECT DISTINCT
     S.USERID UserID,
     S.CMPANYID CompanyID,
     C.CMPNYNAM CompanyName,
       coalesce(S.SecurityRoleID,'') SecurityRoleID,
     coalesce(T.SECURITYTASKID,'') SecurityTaskID,
     coalesce(TM.SECURITYTASKNAME,'') SecurityTaskName,
     coalesce(TM.SECURITYTASKDESC,'') SecurityTaskDescription,
     coalesce(R.DICTID,'') DictionaryID,
     coalesce(R.PRODNAME,'') ProductName,
     coalesce(R.TYPESTR,'') ResourceType,
     coalesce(R.DSPLNAME,'') ResourceDisplayName,
     coalesce(R.RESTECHNAME,'') ResourceTechnicalName,
     coalesce(R.Series_Name,'') ResourceSeries
FROM  SY10500 S   -- security assignment user role
LEFT OUTER JOIN
     SY01500 C   -- company master
     ON S.CMPANYID = C.CMPANYID
LEFT OUTER JOIN
     SY10600 T  -- tasks in roles
ON S.SECURITYROLEID = T.SECURITYROLEID
LEFT OUTER JOIN
     SY09000 TM  -- tasks master
ON T.SECURITYTASKID = TM.SECURITYTASKID
LEFT OUTER JOIN
     SY10700 O  -- operations in tasks
ON T.SECURITYTASKID = O.SECURITYTASKID
LEFT OUTER JOIN
     (select DICTID, PRODNAME, SECRESTYPE, TYPESTR, SECURITYID, RESTECHNAME, DSPLNAME, SERIES, Series_Name from SY09400
     UNION
     select DICTID, PRODNAME, SECRESTYPE, TYPESTR, SECURITYID, RESTECHNAME, DSPLAME, SERIES, Series_Name from CA_ResourceDescriptions) R  -- resource descriptions
     ON R.DICTID = O.DICTID AND O.SECRESTYPE = R.SECRESTYPE
     AND O.SECURITYID = R.SECURITYID

GO

现在在视图上运行grant select语句,以便您可以在智能列表中使用它。

GRANT SELECT ON view_Security_Details TO DYNGRP

没有列信息从原始视图中更改,因此如果已使用此视图创建了智能列表,则无法完成任何其他内容。 SmartList将显示Sy09400表和CA_ResourceDescrips表中的所有资源描述信息。

如果您还没有智能列表来显示安全性细节,则可以使用View View_security_Details中添加一个智能列表构建器或SmartList Designer中的一个。

Not a SQL guru?  Crestwood Associates.has an expert Dynamics GP support team.  Email them at [email protected] 为您的系统提供帮助。

发表评论