1

是否可以将 Windows 用户登录从 Datazen 传递到 SQL Server?

设想:

我创建了一个仪表板,它使用 SQL 查询作为数据源。

数据源的类型为“SQL Server”,标志Integrated Security设置为YES

我还将数据源配置为“实时”,以避免任何缓存问题。

我期望数据视图使用正在浏览最终仪表板的用户的凭据在 SQL Server 上执行,不幸的是,情况并非如此。

问题:

在这种情况下,针对 SQL Server 的身份验证现在使用 Windows 用户帐户完成,服务“Datazen Server Data Acquisition Service”在该用户帐户下运行。我希望“获取服务”将委派有效用户。这可能吗?还是将始终使用服务帐户进行身份验证?

我知道“为每个成员个性化”设置,它将用户名传递给数据视图查询,但这与我的要求不同(利用现有的 MSSQL-DB-Security 来获取有效的 Windows 用户)。

4

1 回答 1

1

您的观察是正确的,默认情况下,服务帐户将被识别为已登录到 SQL Server。

没有办法通过设置来解决这个问题,但是您可以使用一些 T-SQL 魔法在运行时切换用户。您必须使用EXECUTE AS语句引导您的查询,如下所示:

EXECUTE AS USER = 'DomainName\' + '{{ username }}'

SELECT TOP 1 login_name   -- This is just a nice quick test to echo the username.
FROM sys.dm_exec_sessions -- You can swap it out for your real query.
WHERE session_id = @@SPID

当然,这也需要开启“Personalize for each Member”设置,这样用户名才能通过。

这里发生的事情非常不言自明,但基本上您必须通过您的服务帐户显式模拟请求,因为 SQL Server 将使用该帐户通过数据库连接到。运行此EXECUTE AS语句后,它将在会话的其余部分使用该用户帐户。

请注意,您的服务帐户将需要权限IMPERSONATE集的权限,否则这将失败。当然,对于 Datazen Server 中存在但对 SQL Server 没有权限的任何用户,它也会失败,反之亦然。这绝对是可取的行为,但值得牢记的是,如果您将用户添加到一个,您还必须将它们添加到另一个。

免责声明:我是 Microsoft 支持专家,为支持 Datazen 付费。

于 2015-09-15T21:02:13.560 回答