Looker 对 MSSQL 提供 集成级别支持。本页面包含有关将 Looker 连接到 MSSQL 的信息。
加密网络流量
对 Looker 应用与数据库之间的网络流量进行加密是一种最佳实践。可以考虑启用安全的数据库访问文档页面上介绍的某个选项。
如果您对使用 SSL 加密感兴趣,请参阅 Microsoft 文档。
配置服务器身份验证
Looker 需要在您的 MSSQL 服务器上启用“SQL Server 身份验证”。如果您的 MSSQL 服务器配置为仅“Windows 集成身份验证”,请将服务器配置更改为“Windows 集成身份验证和 SQL Server 身份验证”。
如果服务器配置不正确,Looker 将无法连接。这将出现在 SQL Server 日志消息中,例如:“尝试使用 SQL 身份验证登录失败。服务器仅配置为支持 Windows 身份验证。
如果需要进行此项更改,您可以完成以下步骤:
- 在 SQL Server Management Studio 对象资源管理器 中,右键单击服务器,然后单击 属性。
- 在安全页面,在服务器身份验证选择新的服务器身份验证模式,然后单击好的。
- 在SQL Server Management Studio单击对话框好的确认需要重启 SQL Server。
- 在 对象资源管理器 中,右键单击您的服务器,然后单击 重新启动。如果 SQL Server 代理正在运行,则也必须重新启动它。
您可以在微软文档中了解更多相关信息。
创建 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 用户从表中选择数据的权限
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 身份验证
如果您使用 Kerberos 身份验证来管理 MSSQL 数据库,请按照以下部分所述的步骤配置 Looker 以使用 Kerberos 进行连接。
设置 Kerberos 客户端配置
首先,您需要确保 Looker 机器上安装了几个软件,并且存在几个文件。
Kerberos 客户端
运行 kinit 来验证 Kerberos 客户端是否已安装在 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 连接 管理页面上的列表中。
配置 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.16 版本开始,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.16 版本开始,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.16 版本开始,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 | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 环比指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |