所有用户的权限不足 - 如何在数据库级别更改用户设置?

时间:2012-08-21 08:49:00

标签: sql-server-2008 dynamics-crm-2011

我刚刚安装了MS CRM 2011,定制了它,导入了大量数据,然后我更改了一些设置:团队,业务部门,用户角色等。刷新后,所有用户都被锁定了。

我们现在正尝试通过SQL数据库重置用户设置,但我们不确定要编辑哪些表以及如何编辑?

3 个答案:

答案 0 :(得分:1)

不要这样做!

权限仅在应用程序内进行管理。通过直接SQL执行此操作是完全不受支持的,并将以泪流满面。数据库级别的安全模型很复杂且没有文档。如果您手动操作它,您可以确定您将破坏安装并需要完全重新安装。

希望您没有更改默认角色。如果是这种情况,请将默认角色授予用户,然后复制这些角色,作为新角色的基础,供您自定义。

很可能您已经删除了对读取和写入用户数据,核心记录和系统设置等内容的访问权限,但手动将其重新拼凑在一起可能会很麻烦。

如果您已覆盖原始角色,则根据您拥有的CRM 2011版本,您可以恢复原始角色定义:

  1. 提供新的“临时”CRM租户
  2. 创建新解决方案(设置>解决方案>新)
  3. 向新解决方案添加默认角色
  4. 将解决方案导出为非托管解决方案(zip文件)
  5. 将解决方案导入原租户
  6. 然后,您应该已经恢复了角色,并且可以有效地重新启动安全性自定义。

答案 1 :(得分:1)

(从我原来的,"更清洁"回答)。

OP可能会从所有用户(TBC)中删除系统管理员角色。如果是这样,使用SQL将此角色还原给用户仍然不受支持,但相对容易做到:

-- Get id of sys admin role:
SELECT RoleId from [YourOrg_MSCRM].dbo.RoleBase where Name = 'System Administrator'

-- Get id of user to grant access
SELECT systemuserid from [YourOrg_MSCRM].dbo.SystemUserBase where DomainName = 'MyDomain\MyUser'

-- Check role is not already granted (result should be 0)
SELECT COUNT(*) FROM [YourOrg_MSCRM].dbo.SystemUserRoles WHERE RoleId = '[Id of Role]' AND SystemUserId = '[Id of user]'

-- Insert role against that user
INSERT INTO [YourOrg_MSCRM].[dbo].[SystemUserRoles]([SystemUserId],[RoleId],[SystemUserRoleId])
 VALUES ([Id of user] ,[Id of role], NEWID())

答案 2 :(得分:0)

在尝试以下步骤之前,我会创建一个新租户,以确保您的主数据库/ AD环境仍然可用。如果可行,那么我会尝试从备份中恢复。

如果您在更改之前有数据库备份,则可以使用the Import Organization process,这会使您返回到先前的状态。您需要在开始之前备份租户和主数据库。

  1. 删除租户数据库
  2. 还原租户数据库
  3. 如果它仍然不起作用:

    1. 从Deployment Manager中删除租户(您必须先禁用它)
    2. 使用“导入组织”流程重新创建租户
    3. 如果不这样做,您可以rebuild from scratch