我在我的 Windows 10 机器上安装了 Java 并下载Metabase.jar
并运行了它。
现在我可以在localhost:3000访问元数据库
但我无法将我的 SQL Server 数据库设置为数据参考。
我要么得到:
无法连接到数据库。请检查连接详细信息。
或者
5000 毫秒后超时。
任何成功完成 Metabase - SQL Server 连接的人?
我在我的 Windows 10 机器上安装了 Java 并下载Metabase.jar
并运行了它。
现在我可以在localhost:3000访问元数据库
但我无法将我的 SQL Server 数据库设置为数据参考。
我要么得到:
无法连接到数据库。请检查连接详细信息。
或者
5000 毫秒后超时。
任何成功完成 Metabase - SQL Server 连接的人?
目前,从 Metabase 版本0.30.x 开始,答案取决于您是否可以使用直接在 SQL Server 上配置的用户:
更简单的设置选项是直接在 SQL Server 上配置用户。然后 config 只是名称:(任何内容),主机:(全名),数据库名称,用户名,密码,正如您所期望的那样。(我相信你不应该填写Windows 域)。
仅在Windows上,您还可以使用原生集成身份验证sqljdbc_auth.dll
,只需指定 IntegratedSecurity=true 连接属性(以及可选的 authenticationScheme=NativeAuthentication)。我发现如果我将 x64sqljdbc_auth.dll
放在我的<java path>\jre\bin
文件夹中,它就会被捡起。元数据库配置如下面的屏幕截图,除了删除authenticationScheme=JavaKerberos
对域用户使用 Windows 身份验证的跨平台authenticationScheme=JavaKerberos
选项仍然可行,但更难。就是这些步骤:
创建一个krb.conf
并验证登录是否适用于<Java path>\bin\kinit.exe [user]
. 这是一个经过编辑的模板,以匹配下面屏幕截图中的元数据库设置。
使用参数启动 Metabase.jar 文件以加载krb.conf
. 它适用于我java -Djava.security.krb5.conf=c:/<path>/kerberos/krb.conf -jar metabase.jar
。
现在根据下面的屏幕截图在 Metabase 中配置数据库设置
关键时刻!...
可选:仍然无法正常工作?也许您的 SQL Server 没有为 Kerberos 配置?也许您需要 SPN 设置?也许你需要指定一个 java.security.auth.login.config (我自己没有经历过任何这些,我唯一能提供的就是你滚动到这篇文章的底部并潜入,然后用你得到的地方编辑你的问题和你有什么配置)
对于背景,当前(2018 年 8 月)很长:| 总结了很多关于如何连接到 SQL Server 的链接在 Metabase 讨论主题中。 注意:在 v0.30.0 中,动态端口处理(特别是对于使用命名实例的人)的问题已得到修复。
相关: Mac 上 Kerberos 上的简洁 StackOverflow 答案
如果您连接到“命名实例”({SERVER_NAME}/{INSTANCE_NAME})而不是“默认实例”({SERVER_NAME}),您的服务器可能配置为使用动态端口。
一个快速的脏修复是您可以使用以下脚本找到当前端口,然后在元数据库连接参数上使用它。但是当服务重新启动时,这个端口很可能会改变。
从 sys.dm_exec_connections 中选择不同的 local_tcp_port,其中 local_tcp_port 不为空
或者
USE master
GO
Xp_readerrorlog
(查找“服务器正在侦听...”行)