将Metabase连接到Sql Server

6
我在Windows 10机器上安装了Java并下载了Metabase.jar文件,然后运行它。现在我可以通过localhost:3000访问metabase。
但是我无法设置我的SQL Server数据库作为数据引用。我要么得到以下错误信息:
"无法连接到数据库,请检查连接详细信息。"
或者
"5000毫秒后超时。"
有没有成功实现过Metabase-SQL Server连接的人?
2个回答

4

目前,截至Metabase版本0.30.x,答案取决于您是否可以直接在SQL Server上使用用户配置:

  • 设置更简单的选项是使用直接在SQL Server上配置的用户。然后,配置就像您预期的那样:名称:(任何内容),主机:(完整名称),数据库名称,用户名,密码。 (我认为您不应填写Windows域)

  • 仅适用于Windows,您还可以使用具有sqljdbc_auth.dll的本地集成身份验证,只需指定integratedSecurity=true连接属性(以及可选的authenticationScheme=NativeAuthentication)。我发现,如果我将x64 sqljdbc_auth.dll放入我的<java path>\jre\bin文件夹中,它会被捕获。Metabase配置如下面的屏幕截图所示,除了删除authenticationScheme=JavaKerberos

  • 跨平台authenticationScheme=JavaKerberos选项仍然可以使用域用户的Windows身份验证,但更难。这些是步骤:

    1. 创建一个krb.conf,并使用<Java path>\bin\kinit.exe [user]验证登录是否有效。这是模板,已编辑以匹配下面屏幕截图中的Metabase数据库设置。

    2. 使用参数启动Metabase.jar文件以加载krb.conf。对我而言,它与java -Djava.security.krb5.conf=c:/<path>/kerberos/krb.conf -jar metabase.jar一起工作。

    3. 现在根据下面的屏幕截图配置Metabase中的数据库设置

    4. 关键时刻! ...

    5. 可选:还是不起作用吗?也许您的SQL Server没有配置Kerberos?也许您需要设置SPN?也许您需要指定java.security.auth.login.config(我自己没有遇到过这些问题,我唯一能提供的是您可以滚动到本帖子底部并深入研究,然后编辑您的问题,说明您达到了什么配置)

使用Kerberos设置的Metabase SQL Server: enter image description here

作为背景,截至当前(2018年8月),关于如何连接SQL Server的详细信息可以在Metabase讨论主题中找到,里面有很多链接。需要注意的是,在v0.30.0版本中,修复了动态端口处理问题(特别是对于使用命名实例的用户)。
相关内容:StackOverflow上有一个关于Mac上Kerberos的不错回答

1
如果您连接的是“命名实例”({SERVER_NAME}/{INSTANCE_NAME}),而不是“默认实例”({SERVER_NAME}),则您的服务器可能配置为使用动态端口。
一种快速的解决方法是,您可以使用以下脚本查找当前端口,然后在Metabase连接参数中使用它。但是,当服务重新启动时,这个端口很可能会改变。
SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL
USE master
GO
Xp_readerrorlog

(查找“Server is listening on…”行)

  • 更加简洁的方法是通过“SQL Server Configuration Manager”设置实例端口 - “SQL Server Network Configuration” - “TCP/IP” - 右键属性 - “TCP动态端口”(应该为0并且应该删除)和“TCP端口”(新的默认端口应在此处设置)。还应该运行“SQL Server Browser”服务。更详细的解释在这里

Metabase 的最新版本似乎能够找到正确的端口。在连接设置中,只需将端口字段留空即可。 - Turker Tunali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接