【问题标题】:Excel not getting data from SQL ServerExcel 未从 SQL Server 获取数据
【发布时间】:2017-05-05 13:37:33
【问题描述】:

我们有专门的云服务器托管 SQL Server 2014 和 Microsoft Dynamics CRM 2016,它们可以正常工作。

我有一个查询从FilteredOpportunities 视图中获取数据,当我尝试在其中运行它时,我可以在 SQL Server Management Studio 中作为 Windows 用户而不是 SQL 用户运行它(仅显示列名)我的笔记本电脑上的 SQL Server Management Studio 使用 sql 用户(不能使用 windows 身份验证,因为它不在同一个域中),它只返回列名,没有其他内容。

该帐户拥有您可能想到的所有权限,可以尝试获取数据,但它不会让步。

【问题讨论】:

  • 您是说 SSMS 在任何机器/帐户上运行时都不会返回正确的结果,还是只有您的笔记本电脑出现问题?
  • 不管账户SSMS只返回列名。我没有另一台机器可以测试它。
  • 但是,当查询在服务器上运行时,它很高兴
  • 在服务器上运行它(当它工作时)和在你的笔记本电脑上运行它(当它不工作时)时,你是否使用相同的凭据向 SQL Server 进行身份验证?
  • 我刚刚尝试在我想要的用户下的服务器上使用它,它不会工作。我的道歉我似乎记得它有效。为澄清起见,我有一个名为 crmadmin 的用户,该用户是具有所有者权限的 Windows 用户,可以获取数据,而视图用户是具有所有者权限的 sql 用户。

标签: sql sql-server crm dynamics-crm-2016


【解决方案1】:

您不能使用 SQL 用户查询 CRM 的过滤视图。为此,您需要使用 Windows 用户。

如果你想直接用 SQL 用户查询,你可以使用底层的 dbo.OpportunityBase-table。这不会应用 CRM 安全模型。

相反,您可能需要考虑使用其中一种 CRM 网络服务来支持对数据的访问,并强制实施安全模型。如果您的目的是将数据导入 Excel,则直接支持使用 Web 服务。见Export to an Excel dynamic worksheet

【讨论】:

    【解决方案2】:

    我找到了答案。它有点笨拙。我可以使用 SQL 用户连接到数据库(因为我无法使用 Windows 身份验证,因为我在不同的域中)然后我可以将代码添加到现有代码的顶部以模拟具有读取数据权限的用户。对于那些想知道代码的人:

    DECLARE  @uid uniqueidentifier
    
    SET @uid = convert(uniqueidentifier, '((UID of the user you want to impersonate))')
    
    SET CONTEXT_INFO @uid
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2023-03-05
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多