通过 Windows 用户获取 Datazen SQL 服务器数据源?

Pass through Windows user for Datazen SQL Server data sources?

是否可以将 Windows 用户登录从 Datazen 直通到 SQL 服务器?

场景:

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

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

我还将数据源配置为 "Real Time," 以避免任何缓存问题。

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

问题:

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

我知道 "personalize for each member" 设置,它将用户名传递给数据视图查询,但这与我的要求不同(利用现有的 MSSQL-DB-Security对于有效 windows-用户)。

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

无法通过设置解决这个问题,但您可以使用一些 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 服务器将使用该帐户通过数据库连接。一旦您 运行 此 EXECUTE AS 声明,它将在会话的剩余部分使用该用户帐户。

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

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