Looker 对 MSSQL 提供集成级支持。本页面介绍了如何将 Looker 连接到 MSSQL。
加密网络流量
对 Looker 应用与数据库之间的网络流量进行加密是一种最佳实践。可以考虑启用安全的数据库访问文档页面上介绍的某个选项。
如果您有兴趣使用 SSL 加密,请参阅 Microsoft 文档。
配置服务器身份验证
Looker 要求您的 MSSQL 服务器使用“SQL Server 身份验证”。如果您的 MSSQL 服务器仅配置为“Windows 集成身份验证”,请将服务器配置更改为“Windows 集成身份验证和 SQL Server 身份验证”。
如果服务器配置未正确设置,Looker 将无法连接。这会显示在 SQL Server 日志消息中,例如:“An attempt to log in using SQL authentication failed. 服务器仅配置了 Windows 身份验证。”
如果需要进行此更改,您可以完成以下步骤:
- 在 SQL Server Management Studio 对象资源管理器中,右键点击服务器,然后点击属性。
- 在安全性页面上,在服务器身份验证下,选择新的服务器身份验证模式,然后点击确定。
- 在 SQL Server Management Studio 对话框中,点击确定以确认需要重启 SQL Server。
- 在对象资源管理器中,右键点击您的服务器,然后点击重新启动。如果 SQL Server 代理正在运行,则还必须重新启动该代理。
如需详细了解此问题,请参阅 Microsoft 的文档。
创建 Looker 用户
Looker 使用 SQL Server 身份验证向您的数据库进行身份验证。不支持使用网域账号。
如需创建账号,请运行以下命令。将 some_password_here 更改为唯一且安全的密码:
CREATE LOGIN looker
WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO
向 Looker 用户授予从表中进行 SELECT 的权限
对于您要查询的每个表或架构,Looker 都需要 SELECT 权限。您可以通过多种方式分配 SELECT 权限:
如需向各个架构授予
SELECT权限,请针对每个架构运行以下命令:GRANT SELECT on SCHEMA :: 'schema_name' to looker;如需向各个表授予
SELECT权限,请针对每个表运行以下命令:GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;对于 MSSQL 版本 2012 或更高版本,您也可以使用以下命令为 Looker 用户分配
db_datareader角色:USE MyDatabase; ALTER ROLE db_datareader ADD MEMBER looker; GO
授予 Looker 用户查看和停止运行查询的权限
Looker 必须获得授权才能检测和停止正在运行的查询,这需要以下权限:
ALTER ANY CONNECTIONVIEW SERVER STATE
如需授予这些权限,请运行以下命令:
USE Master;
GRANT ALTER ANY CONNECTION TO looker;
GRANT VIEW SERVER STATE to looker;
GO
向 Looker 用户授予创建表的权限
如需向 Looker 用户授予创建 PDT 的权限,请运行以下命令:
USE MyDatabase;
GRANT CREATE TABLE to looker;
GO
临时架构设置
如需创建归 Looker 用户所有的架构并向 Looker 用户授予必要的权限,请运行以下命令:
CREATE SCHEMA looker_scratch AUTHORIZATION looker;
配置 Kerberos 身份验证
如果您在 MSSQL 数据库中使用 Kerberos 身份验证,请按照以下部分中的说明,配置 Looker 以使用 Kerberos 进行连接。
设置 Kerberos 客户端配置
首先,您需要确保在 Looker 机器上安装了多款软件,并且存在多个文件。
Kerberos 客户端
运行 kinit,验证 Looker 机器上是否已安装 Kerberos 客户端。如果未安装,请安装 Kerberos 客户端的二进制文件。
例如,在 Redhat 或 CentOS 上,此命令如下所示:
sudo yum install krb5-workstation krb5-libs krb5-auth-dialog
Java 8
必须在 Looker 机器上以及 Looker 用户的 PATH 和 JAVA_HOME 中安装 Java 8。如有必要,请将其本地安装到 looker 目录中。
Java 加密扩展
从此 Oracle 下载页面下载并安装适用于 Java 8 的 Java Cryptography Extension (JCE)。
- 找到 Java 安装的
jre/lib/security目录。 - 从相应目录中移除以下 JAR 文件:
local_policy.jar和US_export_policy.jar。 - 将这两个文件替换为 JCE 无限强度管辖区政策文件下载中包含的 JAR 文件。
虽然可以搭配已安装 JCE 的 Java 8 之前的 Java 版本使用,但不建议这样做。
- 找到 Java 安装的
更新
~looker/.bash_profile中的JAVA_HOME和PATH,使其指向正确的 Java 和source ~/.bash_profile安装,或者退出并重新登录。使用
java -version验证 Java 版本。使用
echo $JAVA_HOME验证JAVA_HOME环境变量。
gss-jaas.conf
在 looker 目录中创建一个包含以下内容的 gss-jaas.conf 文件:
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
doNotPrompt=true;
};
如果测试需要,可以按如下方式将 debug=true 添加到此文件中:
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
doNotPrompt=true
debug=true;
};
krb5.conf
运行 Looker 的服务器还应具有有效的 krb5.conf 文件。默认情况下,此文件位于 /etc/krb5.conf 中。如果该文件位于其他位置,则必须在环境(shell 环境中的 KRB5_CONFIG)中指明。
您可能需要从其他 Kerberos 客户端机器复制此文件。
lookerstart.cfg
通过在 looker 目录(包含 looker 启动脚本的同一目录)中创建一个名为 lookerstart.cfg 的文件来指向 gss-jaas.conf 和 krb5.conf 文件,该文件包含以下代码行:
JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
LOOKERARGS=""
如果 krb5.conf 文件不在 /etc/krb5.conf 中,则还需要添加以下变量:
-Djava.security.krb5.conf=/path/to/krb5.conf
如需进行调试,请添加以下变量:
-Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true
然后使用 ./looker restart 重启 Looker。
使用 Kerberos 进行身份验证
用户身份验证
如果
krb5.conf不在/etc/中,请使用环境变量KRB5_CONFIG来指明其位置。运行命令
klist,确保 Kerberos 票据缓存中存在有效票据。如果没有工单,请运行
kinit username@REALM或kinit username来创建工单。与 Looker 搭配使用的账号很可能采用无头模式,因此您可以从 Kerberos 获取 keytab 文件,以存储凭据供长期使用。使用
kinit -k -t looker_user.keytab username@REALM等命令获取 Kerberos 票据。
自动续订工单
设置一个定期运行的 cron 作业,以在 Kerberos 票据缓存中保留有效的票据。此命令的运行频率取决于集群的配置。klist 应指示票证的失效时间。
创建 Looker 与数据库的连接
请按照以下步骤创建从 Looker 到数据库的连接:
- 在 Looker 的管理部分中,选择连接,然后点击添加连接。
从方言下拉菜单中,选择您的 Microsoft SQL Server 版本。
对于远程主机和端口,请输入主机名和端口(默认端口为 1433)。
如果您需要指定 1433 以外的非默认端口,并且您的数据库需要使用英文逗号而不是英文冒号,则可以在连接设置中更下方的其他 JDBC 参数字段中添加
useCommaHostPortSeparator=true,这样您就可以使用英文逗号来表示远程主机:端口。例如:jdbc:sqlserver://hostname,1434填写其余连接详细信息。这些设置中的大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到您的数据库文档页面。
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。
如需保存这些设置,请点击连接。
配置 Looker 连接
按照将 Looker 连接到数据库文档页面上的说明,创建与 MSSQL 数据库的连接。在连接设置页面的其他 JDBC 参数部分中,添加以下内容:
;integratedSecurity=true;authenticationScheme=JavaKerberos
有些网络配置了两个 Kerberos 领域,一个用于 Windows Active Directory,另一个用于 Linux 和其他非 Windows 系统。在这种情况下,当以 Linux 为中心的领域和 Active Directory 领域配置为相互信任时,称为“跨领域身份验证”。
如果您的网络使用跨领域身份验证,您必须明确指定 MSSQL Server 的 Kerberos 正文。在其他 JDBC 参数字段中,添加以下内容:
;serverSpn=service_name/FQDN\:PORT@REALM
将 FQDN 和 PORT@REALM 替换为您的网络信息。例如:
;serverSpn=MSSQLSvc/dbserver.internal.example.com:1433@AD.EXAMPLE.COM
此外,Looker 中的连接设置页面需要在用户名和密码字段中输入内容,但这些内容对于 Kerberos 来说不是必需的。在这些字段中输入虚拟值。
测试连接,确保连接配置正确无误。
支持的 JDBC 参数
对于 Microsoft SQL Server,Looker 支持在连接的其他 JDBC 参数字段中添加以下 JDBC 参数。如需了解这些参数,请参阅数据库的相关文档。
accessTokenApplicationIntentapplicationNameauthenticationauthenticationSchemecancelQueryTimeoutcolumnEncryptionSettingdatabasedatabaseNamedisableStatementPoolingdomainenablePrepareOnFirstPreparedStatementCallEncryptfailoverPartnerfipsgsscredentialhostNameInCertificateinstanceNameIntegrated SecurityintegratedSecurityjaasConfigurationNamekeyStoreAuthenticationlastUpdateCountlocktimeoutloginTimeoutmsiClientIdmultiSubnetFailoverpacketSizepasswordportNumberqueryTimeoutrealmresponseBufferingselectMethodsendStringParametersAsUnicodesendTimeAsDatetimeserverNameserverPreparedStatementDiscardThresholdserverSpntransparentNetworkIPResolutiontrustServerCertificateuseBulkCopyForBatchInsertuseCommaHostPortSeparatoruserworkstationIDxopenStates
功能支持
为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
自 Looker 26.10 起,Microsoft SQL Server 2008 及更高版本支持以下功能:
| 功能 | 是否支持? |
|---|---|
| Looker (Google Cloud Core) | |
| 对称聚合 | |
| 派生表 | |
| 基于 SQL 的永久性派生表 | |
| 原生永久性派生表 | |
| 稳定视图 | |
| 终止查询 | |
| 基于 SQL 的透视 | |
| 时区 | |
| SSL | |
| 小计 | |
| 其他 JDBC 参数 | |
| 区分大小写 | |
| 位置类型 | |
| 列表类型 | |
| 百分位 | |
| 不同值百分位 | |
| SQL Runner “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 与前一时间段相比的指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |
自 Looker 26.10 起,Microsoft SQL Server 2016 支持以下功能:
| 功能 | 是否支持? |
|---|---|
| Looker (Google Cloud Core) | |
| 对称聚合 | |
| 派生表 | |
| 基于 SQL 的永久性派生表 | |
| 原生永久性派生表 | |
| 稳定视图 | |
| 终止查询 | |
| 基于 SQL 的透视 | |
| 时区 | |
| SSL | |
| 小计 | |
| 其他 JDBC 参数 | |
| 区分大小写 | |
| 位置类型 | |
| 列表类型 | |
| 百分位 | |
| 不同值百分位 | |
| SQL Runner “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 与前一时间段相比的指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |
自 Looker 26.10 起,Microsoft SQL Server 2017 及更高版本支持以下功能:
| 功能 | 是否支持? |
|---|---|
| Looker (Google Cloud Core) | |
| 对称聚合 | |
| 派生表 | |
| 基于 SQL 的永久性派生表 | |
| 原生永久性派生表 | |
| 稳定视图 | |
| 终止查询 | |
| 基于 SQL 的透视 | |
| 时区 | |
| SSL | |
| 小计 | |
| 其他 JDBC 参数 | |
| 区分大小写 | |
| 位置类型 | |
| 列表类型 | |
| 百分位 | |
| 不同值百分位 | |
| SQL Runner “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 与前一时间段相比的指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |