ODBC 配置和连接参数¶
Snowflake ODBC 驱动程序同时使用配置和连接参数。根据安装驱动程序的环境,设置参数的方法会有所不同。
备注
不能在 ODBC 客户端连接字符串内设置 SEARCH_PATH 参数。在设置搜索路径之前必须建立会话。
本主题内容:
在 Windows 中设置参数¶
在 Windows 中:
配置参数在 Windows 注册表中使用 regedit 和以下注册表路径设置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Snowflake\Driver]
连接参数在数据源名称 (DSNs) 中设置:
人们通常使用 Windows Data Source Administration 工具创建和编辑 DSNs。
如果您愿意,可以使用 regedit 直接在 Windows 注册表中编辑 DSNs 的注册表键。根据您使用的是 64 位还是 32 位 Windows,以及您编辑的是用户还是系统 DSN,键的注册表路径会有所不同:
64 位 Windows:
[HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>] [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
32 位 Windows:
[HKEY_CURRENT_USER\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>] [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
要使用 regedit 添加连接参数,请添加一个新的 String Value,双击创建的值,然后输入 ODBC 参数作为 Value name,并输入参数值作为 Value data。
在 macOS 或 Linux 中设置参数¶
在 macOS 或 Linux 中:
配置参数在配置文件 (
simba.snowflake.ini
) 中设置。连接参数在数据源名称 (DSN) 文件 (
odbc.ini
) 中设置。
配置参数¶
CABundleFile
设置证书颁发机构 (CA) 捆绑包文件的位置。必须引用包含有效 CA 证书列表的文件。
对于 Linux,RPM 和 DEB 安装程序会自动复制文件并设置此参数。
对于 Mac,PKG 安装程序会复制文件并设置此参数。
对于 Windows,MSI 安装程序会复制文件并设置此参数。
client_config_file
指定 日志记录配置文件 的路径,您可以使用该配置文件定义日志记录级别和保存日志文件的目录。
CURLVerboseMode
设置为
true
可启用 cURL 详细日志记录。日志文件snowflake_odbc_curl.dmp
将得到创建并更新。Snowflake ODBC 驱动程序使用 cURL 作为 HTTP 和 TLS 库。此参数可用于诊断网络问题。DisableOCSPCheck
设置为
true
可禁用在线证书状态协议 (OCSP) 的 TLS 证书撤消状态检查。在正常情况下,不应设置此标志。但是,如果 OCSP 可用性问题持续存在,应用程序可能会临时设置此参数以解除连接问题,并在 OCSP 可用性问题解决后移除此设置。
EnableAutoIpdByDefault
设置为
false
以配置 ODBC 驱动程序,从而将 SQL_ATTR_ENABLE_AUTO_IPD 设置为false
(这是 ODBC 标准中的默认值)。否则,默认情况下,ODBC 驱动程序会将 SQL_ATTR_ENABLE_AUTO_IPD 设置为 true 以兼容第三方工具。
此参数在 ODBC 驱动程序 2.22.0 版本中推出。
EnablePidLogFileNames
设置为
true
可在日志文件的名称中包含进程 ID。例如,如果进程 ID 为 7394,则日志文件将被命名为:snowflake_odbc_connection_7394_0.log
snowflake_odbc_generic7394_0.log
snowflake_odbc_curl_7394.dmp
您可以设置此参数,防止不同的进程覆盖相同的日志文件。每个进程都会生成自己的一组日志文件。
默认情况下,此参数的值为
false
。此参数在 ODBC 驱动程序 2.22.2 版本中推出。
get_size_threshold
指定了最小文件大小(以兆字节 [MB] 为单位),以便在使用 GET 命令下载文件时将文件分解为较小的部分。对于小于此阈值的文件,下载时不会分解为多个部分。
默认值为 5 (MB)。
备注
对于特定情况,可以设置相应的 get_size_threshold 连接参数来替换此值。
KeepLeadingTrailingZeros
确定了如何处理格式为字符串值的数字中的前导零或末尾零。默认情况下,该参数设置为
true
,这意味着驱动程序将保留任何前导零或末尾零。将参数设置为false
可移除前导零或末尾零,例如:0.23
将变为.23
7.00
将变为7
LogFileCount
设置了轮换旧文件之前要保留的最大日志文件数,以便为新日志文件腾出空间。
LogFileSize
指定了日志文件的最大大小(以字节为单位)。当日志文件达到指定大小时,ODBC 驱动程序会自动创建新的日志文件。
默认值为 20971520。
LogLevel
指定了为使用 ODBC 驱动程序的客户端记录的详细信息级别:
0 = 关闭
1 = 致命错误
2 = 错误
3 = 警告
4 = 信息
5 = 调试
6 = 踪迹
LogPath
指定了使用 ODBC 驱动程序的客户端的 Snowflake 日志文件的位置。
MapToLongVarchar
指定一个字符串长度阈值,当字符串长度达到或超过这个阈值时,将字符串值映射到 ODBC
SQL_LONGVARCHAR
数据类型(而不是默认的 ODBCSQL_CHAR
或SQL_VARCHAR
数据类型)。< 0(或未设置):以其默认 ODBC 数据类型映射字符串值。默认值 = -1。
>= 0:指定了要映射到默认 ODBC 字符串数据类型的最大字符串字符数。所有大于此值的字符串都将映射到
SQL_LONGVARCHAR
。
您也可以将此参数指定为连接参数。(请参阅在 Windows、macOS 和 Linux 中设置参数的说明。)如果同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。
此参数在 ODBC 驱动程序 2.24.3 版本中推出。
NoExecuteInSQLPrepare
设置为
true
以配置 ODBC 驱动程序,从而在将 DDL 语句(例如 CREATE 和 DROP)传递给SQLPrepare()
和SQLExecute()
时使用标准 ODBC 行为。在 Snowflake 中,默认情况下,将 DDL 语句传递给
SQLPrepare()
时,ODBC 驱动程序会将语句发送到数据源以供执行(而不是准备)。将 DDL 语句传递给SQLExecute()
时,ODBC 驱动程序不会将语句发送到数据源。如果将
NoExecuteInSQLPrepare
设置为true
,则 ODBC 驱动程序将遵循标准 ODBC 行为。调用SQLPrepare()
会将语句发送到数据源进行准备(而不是执行)。调用SQLExecute()
会将语句发送到数据源以供执行。此参数在 ODBC 驱动程序 2.21.6 版本中推出。
NoProxy
指定了要绕过代理服务器的主机名模式(例如
.amazonaws.com
可绕过 Amazon S3 访问)。备注
Snowflake ODBC 驱动程序将
NoProxy
值传递给 curl 选项CURLOPT_NOPROXY
。Proxy
以
<host>:<port>
的形式为使用 ODBC 驱动程序的客户端指定代理服务器。备注
在 Windows 中,安装 ODBC 驱动程序时会创建
LogLevel
和LogPath
条目并用默认值填充;但是,安装过程中不会创建Proxy
条目。若要指定用于驱动程序的代理,必须手动将该条目添加到驱动程序注册表键中。若要绕过一个或多个 IP 地址或 URLs 的代理,请添加 NoProxy 参数。
连接参数¶
必填的连接参数¶
<name>
(数据源)指定了 DSN 的名称。
port
(端口)指定了驱动程序侦听 Snowflake 通信的端口。
备注
无需更改默认
Port
值443
。pwd
(密码)连接到 Snowflake 需要密码;但是,出于安全和身份验证的原因,Snowflake 强烈建议不要将密码凭据直接存储在任何 DSN 定义中。
通常情况下,尝试连接到 Snowflake 的客户端应用程序以编程方式将凭据传递给驱动程序。
备注
在 Windows 中,ODBC 驱动程序在 Data Source Administration 工具中显示一个 Password 字段;但是,驱动程序 并不 存储该字段中输入的任何值。相反,驱动程序要求在连接时提供登录凭据。
server
(服务器)使用以下格式为账户指定 主机名:
account_identifier.snowflakecomputing.cn
有关账户标识符的信息,请参阅 账户标识符。
uid
(用户)指定了要进行身份验证的 Snowflake 用户的登录名。
可选连接参数¶
BROWSER_RESPONSE_TIMEOUT
指定了在外部浏览器中等待身份验证响应的秒数。
默认值为 120。
CLIENT_OUT_OF_BAND_TELEMETRY_ENABLED=<Boolean>
指定是否启用带外遥测。
默认值为
true
CLIENT_SESSION_KEEP_ALIVE=<Boolean>
指定了一段时间不活动后,是保持当前会话处于活动状态,还是强制用户重新登录。如果值为
true
,Snowflake 会无限期地保持会话处于活动状态,即使用户没有活动也是如此。如果值为false
,用户在不活动 4 小时后必须重新登录。默认值为
false
。
database
(数据库)指定了由驱动程序启动的会话所用的默认数据库。
maxHttpRetries
(数据库)指定了在返回错误之前,对 HTTP 请求失败的查询的最大 HTTP 重试次数。设置
maxHttpRetries=0
移除了重试限制,但此操作会带来驱动程序无限重试失败 HTTP 调用的风险。默认值为 7。
role
(角色)指定了由驱动程序启动的会话所用的默认角色。指定的角色应是已分配给驱动程序指定用户的角色。如果指定的角色与分配给用户的任何角色均不匹配,则驱动程序启动的会话没有初始角色;但是,始终可以在会话中指定角色。
schema
(架构)指定了由驱动程序启动的会话所用的默认架构。
默认值为
public
。
SecondaryRoles
(角色)指定了由驱动程序启动的会话所用的辅助角色。该角色必须已被授予驱动程序的指定用户。还可以使用
USE SECONDARY ROLES
命令在用户会话中激活辅助角色。可能的值包括:
All:已授予用户的所有角色。
None:不允许任何角色(禁用辅助角色)。
tracing
(跟踪)要在驱动程序跟踪文件中记录的详细信息级别:
0 = 禁用跟踪
1 = 仅致命错误跟踪
2 = 错误跟踪
3 = 警告跟踪
4 = 信息跟踪
5 = 调试跟踪
6 = 详细跟踪
warehouse
(仓库)指定了由驱动程序启动的会话所用的默认仓库。
其他连接参数¶
备注
在 Windows 中,可以通过使用 regedit 在 Windows 注册表中设置这些其他连接参数。
在 macOS 或 Linux 中,可在 odbc.ini
文件中设置这些参数,具体方法类似于其余的连接参数。
allowEmptyProxy
指定是否允许 proxy 和 no_proxy 连接参数为空值,如以下部分所述:
设置此值会产生以下效果:
true
:驱动程序将空代理值视为有效代理设置,并替换任何现有设置或环境变量。false
:驱动程序忽略空代理值并使用指定的配置参数或环境变量。
默认值为
true
。application
仅限 Snowflake 合作伙伴使用:指定要通过 ODBC 连接的合作伙伴应用程序的名称。
也可以通过调用
SQLSetConnectAttr()
函数来设置此参数。有关更多详细信息,请参阅 :ref:` SQLSetConnectAttr 函数的 Snowflake 特定行为 <label-odbc_api_sqlsetconnectattr_specific_behavior>`。authenticator
指定了用于验证用户登录凭据的身份验证器:
snowflake
(默认),使用内部 Snowflake 身份验证器。externalbrowser
,使用您的 Web 浏览器 与 Okta、AD FS 或已为账户定义的其他兼容 SAML 2.0 的身份提供商 (IdP) 进行身份验证。备注
Snowflake ODBC 驱动程序不支持在 MacOS 中使用 Microsoft Excel 进行
externalbrowser
身份验证。:code:` https:/ (https:/)/<okta_account_name>.okta.com ` (即 Okta 账户的 URL 端点),:ref:` 通过原生 Okta 进行身份验证 <label-native-sso-okta>` (仅当 IdP 是 Okta 时才受支持)。
oauth
,使用 OAuth 进行身份验证。如果将 OAuth 指定为身份验证器,则还必须设置token
参数来指定 OAuth 令牌(参阅下文)。username_password_mfa
,使用 MFA 令牌缓存进行身份验证。有关更多详细信息,请参阅 ` 使用多重身份验证 `_ (本主题内容)。
默认值为
snowflake
。在 Windows 中,可以使用 ODBC 数据源管理工具 设置此参数。
有关身份验证的更多信息,请参阅 管理/使用联合身份验证 和 客户端、驱动程序和连接器。
default_binary_size
、.default_varchar_size
指定了驱动程序从大小不确定的 BINARY 或 VARCHAR 列中检索和转换值时使用的默认大小(以字节为单位)。从这些类型的列中检索值时可设置此项。
默认情况下,驱动程序在分配内存以检索大小不确定的列的值时,使用
8388608
(对于 BINARY 列)和16777216
(对于 VARCHAR 列)作为默认大小。若要减少为这些值分配的内存量,可以将
default_binary_size
和default_varchar_size
设置为这些类型的列中值的最大大小。备注
设置这些值只会更改实现行描述符 (IRD) 中的
SQL_DESC_LENGTH
字段以及从SQLDescribeCol/SQLColAttribute/SQLColAttributes
返回的相应值。即使数据长度超过了设置值,驱动程序仍会返回整个数据。另一方面,应用程序可以根据这些参数中指定的长度分配数据缓冲区,从而导致因缓冲区空间不足而截断数据。作为最佳实践,Snowflake 建议将默认大小设置为大于典型数据的最大大小(例如 4000 或 8000 字节),以显著减少内存使用量,使其低于原始默认值 16777216/8388608 字节,并最大程度地减少数据被截断的可能性。
请注意,您还可以使用这些设置来避免以下错误,此错误在使用 Microsoft OLE DB 提供商 (MSDASQL) 访问 Snowflake 数据库时可能发生:
Requested conversion is not supported Cannot get the current row value of column
您可以将这些参数指定为连接 配置参数 的
simba.snowflake.ini
中)。如果被同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。这些参数在 ODBC 驱动程序 2.23.2 版本中推出。
get_size_threshold
指定了最小文件大小(以兆字节 [MB] 为单位),以便在使用 GET 命令下载文件时将文件分解为较小的部分。对于小于此阈值的文件,下载时不会分解为多个部分。
默认值为 5 (MB)。
备注
将此值设置为连接参数会替换相应 get_size_threshold 配置参数的值。
login_timeout
指定了连接到 Snowflake 服务时,返回登录失败错误之前等待响应的时间(以秒为单位)。
默认值为 ** 300 ** (秒)。
network_timeout
指定了与 Snowflake 服务交互时,返回错误之前等待响应的时间(以秒为单位)。零 (0) 表示未设置网络超时。
默认值为 ** 0 ** (秒)。
retryTimeout
指定在 HTTP 请求失败的查询返回 HTTP 重试错误之前等待的时间(以秒为单位)。零 (0) 表示未设置重试超时。
默认值为 ** 300 ** (秒)。
no_proxy
指定了允许绕过代理服务器的主机名末尾(例如
no_proxy=.amazonaws.com
表示访问 Amazon S3 无需通过代理)。此参数不支持通配符。指定的每个值都应为以下内容之一:
主机名的末尾(或完整主机名),例如:
.amazonaws.com
myorganization-myaccount.snowflakecomputing.cn
IP 地址,例如:
192.196.1.15
如果指定了多个值,则应使用逗号分隔这些值,例如:
no_proxy=localhost,.my_company.com,myorganization-myaccount.snowflakecomputing.cn,192.168.1.15,192.168.1.16
备注
此参数应用于进程。如果另一个连接共享相同的进程,则代理设置必须相同,否则行为无法预测。
odbc_use_standard_timestamp_columnsize
此布尔参数会影响为 SQL_TYPE_TIMESTAMP 返回的列大小(以字符为单位)。当此参数设置为 true 时,驱动程序将按照 ODBC 标准返回 29。当此参数设置为
false
时,驱动程序将返回 35,为时区偏移留出空间(例如“-08:00”)。此值不仅可以通过 odbc.ini 文件(Linux 或 macOS)或 Microsoft Windows 注册表进行设置,还可以通过连接字符串进行设置。
默认值为
false
。passcode
指定用于多重身份验证的密码。
有关多重身份验证的更多信息,请参阅 MFA(多重身份验证)。
passcodeInPassword
指定了是否将多重身份验证的密码追加到密码中:
on
(或true
)表示追加密码。off
(或false
)或任何其他值表示不追加密码。
默认值为
off
。
proxy
以
http://<hostname>:<port>/
或<hostname>:<port_number>
的格式指定了代理服务器 URL,以便 ODBC 的所有通信都使用代理服务器。备注
此参数应用于进程。如果另一个连接共享相同的进程,则代理设置必须相同,否则行为无法预测。
put_compresslv
指定了 ODBC 驱动程序在使用 PUT 命令传输数据时所用的压缩率。此参数将替换默认的 gzip 压缩级别。如果未指定
put_compresslv
,ODBC 驱动程序将使用默认压缩级别。有效值为
-1
至9
。默认值为-1
,指定默认的Z_DEFAULT_COMPRESSION
。值
0
至9
指定了自定义压缩率。如果值为0
,则 ODBC 驱动程序使用较低的压缩率;如果值为9
,则使用较高的压缩率。使用较高的压缩速率会导致数据传输速度变慢。您还可以将此参数指定为 配置参数 的
simba.snowflake.ini
中)。如果被同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。此参数已在 ODBC 驱动程序 2.23.3 版本中推出。
put_fastfail
如果在 PUT 命令中使用通配符一次上传多个文件,并且希望驱动程序在发生错误时停止上传文件,可将此参数设置为
true
。默认值为
false
,这意味着如果一个文件发生错误,驱动程序将继续上传其余文件。此参数已在 ODBC 驱动程序 2.22.3 版本中推出。
自 ODBC 驱动程序 2.22.5 版本起,您还可以将此参数指定为 配置参数 的
simba.snowflake.ini
中)。如果被同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。
put_maxretries
指定了 PUT 命令失败时,驱动程序重试此命令的次数。
默认值为 5。
此参数的有效值范围为
0
至100
。如果指定的值超出此范围,驱动程序将使用默认值5
。此参数已在 ODBC 驱动程序 2.22.3 版本中推出。
自 ODBC 驱动程序 2.22.5 版本起,您还可以将此参数指定为 配置参数 的
simba.snowflake.ini
中)。如果被同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。
put_tempdir
指定了用于 PUT 命令请求的临时目录。驱动程序使用此临时目录创建临时压缩文件,然后再将这些文件上传到 Snowflake。
如果未设置此参数,驱动程序将创建并使用临时目录
/tmp/snowflakeTmp_username
,其中username
是操作系统中当前用户的用户名。您还可以将此参数指定为 配置参数 的
simba.snowflake.ini
中)。如果被同时设置为连接参数 和 配置参数,则 DSN(或连接字符串)中的连接参数优先。此参数已在 ODBC 驱动程序 2.23.1 版本中推出。
query_timeout
指定了返回错误之前等待查询完成的时间(以秒为单位)。零 (0) 表示无限期等待。
默认值为 ** 0 ** (秒)。
token=<string>
指定要用于身份验证的 OAuth 令牌,其中
<string>
为令牌。仅当设置了authenticator=oauth
参数时,才需要此参数。默认为无。
validateSessionParam
指定了当以下任意 会话连接参数 无效时如何响应:
可能的值包括:
false
(默认):连接成功,但将database
和schema
参数的值设置为空字符串,并将warehouse
参数设置为其默认值。有关仓库的更多信息,请参阅 会话中的仓库使用情况。true
:拒绝连接并引发错误。
使用 SnowCD 验证与 Snowflake 的网络连接¶
配置驱动程序后,可以使用 SnowCD 评估与 Snowflake 的网络连接并进行故障排除。
可以在初始配置过程中使用 SnowCD,也可以根据需要随时使用,以评估与 Snowflake 的网络连接并进行故障排除。
通过代理服务器连接¶
配置代理服务器连接的说明取决于您的操作系统和驱动程序版本:
操作系统 |
驱动程序版本 |
支持的说明 |
---|---|---|
Linux |
2.16.0(2018 年 5 月 3 日发布)或更高版本 |
|
2.13.18(2018 年 2 月 7 日发布)– 2.15.0(2018 年 4 月 30 日发布) |
||
2.13.17 或更低版本 |
||
macOS |
2.16.0(2018 年 5 月 3 日发布)或更高版本 |
|
2.14.0(2018 年 3 月 28 日发布)– 2.15.0(2018 年 4 月 30 日发布) |
||
2.13.21 或更低版本 |
||
Windows |
2.16.0(2018 年 5 月 3 日发布)或更高版本 |
|
2.15.0(2018 年 4 月 30 日发布) |
||
2.14.0 或更低版本 |
备注
上述 ODBC 驱动程序的最新版本支持此处列出的任何配置选项。这些选项按优先顺序列出。如果定义了多个选项,则应用优先级最高的设置。
使用连接参数¶
要通过代理服务器进行连接,请将以下连接参数添加到 DSN:
proxy
no_proxy
例如:
[connection] Description = SnowflakeDB Driver = SnowflakeDSIIDriver Locale = en-US server = myorganization-myaccount.snowflakecomputing.cn proxy = http://proxyserver.company:80 no_proxy = .amazonaws.com
请参阅 连接参数,了解有关参数说明。
使用配置参数¶
备注
这些参数在最近的 ODBC 驱动程序版本中已过时(即不再受支持)。请参阅 通过代理服务器连接,了解支持的选项表。升级驱动程序时,请使用环境变量或连接参数配置代理服务器设置。
要通过代理服务器进行连接,请添加以下配置参数:
Proxy
NoProxy
请参阅 配置参数,了解有关参数说明。
使用环境变量¶
要通过代理服务器进行连接,请配置以下环境变量:
http_proxy
https_proxy
no_proxy
备注
对于 Linux 和 macOS,这些环境变量区分大小写,并且必须以小写形式设置。对于 Windows,环境变量不区分大小写。
例如:
Linux 或 macOS:
export http_proxy=http://proxyserver.company.com:80 export https_proxy=http://proxyserver.company.com:80
如果代理服务器需要用户名和密码,请包含凭据,例如:
export https_proxy=http://username:password@proxyserver.company.com:80
Windows:
set http_proxy=http://proxyserver.company.com:80 set https_proxy=http://proxyserver.company.com:80
如果代理服务器需要用户名和密码,请包含凭据,例如:
set https_proxy=http://username:password@proxyserver.company.com:80
或者,您可以设置 no_proxy
以绕过代理进行特定通信(例如 no_proxy=.amazonaws.com
可绕过 Amazon S3 访问)。
使用单点登录 (SSO) 进行身份验证¶
如果 已将 Snowflake 配置为使用单点登录 (SSO),则可将客户端应用程序配置为使用 SSO 进行身份验证。有关详细信息,请参阅 为连接到 Snowflake 的客户端应用程序使用 SSO。
使用多重身份验证¶
Snowflake 支持缓存 MFA 令牌,包括将 MFA 令牌缓存与 SSO 相结合。
有关更多信息,请参阅 使用 MFA 令牌缓存,最大限度地减少身份验证过程中的提示次数 – 可选。
使用密钥对身份验证¶
ODBC 驱动程序支持密钥对身份验证和密钥轮换。
要开始,请完成密钥对身份验证的初始配置,如 密钥对身份验证和密钥对轮换 所示。
修改驱动程序的数据源名称 (DSN) 条目。有关 DSN 条目的信息,请参阅适用于您的操作系统的主题:
添加以下参数(区分大小写):
AUTHENTICATOR = SNOWFLAKE_JWT
指定了使用具有 JSON Web 令牌 (JWT) 的密钥对身份验证来验证 Snowflake 连接。
JWT_TIME_OUT = integer
可选。指定了 Snowflake 在超时之前等待接收 JWT 的时间长度(以秒为单位)。如果发生超时,身份验证将失败,驱动程序将返回
Invalid JWT token
错误。要解决重复出现这一错误的情况,请增加参数值。默认:30
PRIV_KEY_FILE = path/rsa_key.p8
指定了创建的私钥文件的本地路径(即
rsa_key.p8
)。可以通过调用
SQLSetConnectAttr()
函数来替换 DSN 中设置的值。有关更多详细信息,请参阅 :ref:` SQLSetConnectAttr 函数的 Snowflake 特定行为 <label-odbc_api_sqlsetconnectattr_specific_behavior>`。PRIV_KEY_FILE_PWD = <password>
指定了用于解码私钥文件的密码。
仅当同时设置了参数 PRIV_KEY_FILE 时,才应设置此参数。
可以通过调用
SQLSetConnectAttr()
函数来替换 DSN 中设置的值。有关更多详细信息,请参阅 :ref:` SQLSetConnectAttr 函数的 Snowflake 特定行为 <label-odbc_api_sqlsetconnectattr_specific_behavior>`。
保存设置。
管理日志文件¶
为了帮助您跟踪可能出现的问题,您可以在 ODBC 驱动程序中启用日志记录。ODBC 驱动程序提供了以下配置选项,可用于设置日志记录和管理日志文件:
EnablePidLogFileNames:将进程 ID 添加到日志文件名称中。
LogFileCount:设置了已保存日志文件的最大数量。
LogFileSize:指定了日志文件的最大大小。
LogLevel:指定了要记录的信息类型。
LogPath:设置了日志文件的位置。
您可以使用这些参数来管理命名、存储和轮换日志文件的方式。您可以指定要保留的日志文件的大小和数量,然后再将其替换为新创建的日志文件。下面的示例将进程 ID 追加到文件名以确保唯一性,将最大文件大小设置为 30MB,并保留 100 个最近的日志文件。
EnablePidLogFileNames = true # Appends the process ID to each log file
LogFileSize = 30,145,728 # Sets log files size to 30MB
LogFileCount = 100 # Saves the 100 most recent log files
日志记录配置文件¶
或者,您也可以在 sf_client_config.json
配置文件中轻松指定日志级别和保存日志文件的目录。
备注
此日志记录配置文件功能仅支持以下日志级别:
DEBUG
ERROR
INFO
OFF
TRACE
WARNING
FATAL
此配置文件使用 JSON 定义 log_level
和 log_path
日志记录参数,如下所示:
{
"common": {
"log_level": "DEBUG",
"log_path": "/home/user/logs"
}
}
驱动程序会按以下顺序查找配置文件的位置:
client_config_file
包含配置文件的完整路径。SF_CLIENT_CONFIG_FILE
环境变量,包含配置文件的完整路径。ODBC 驱动程序安装目录,其中文件名必须为
sf_client_config.json
。用户的主目录,其文件名必须为
sf_client_config.json
。
备注
LogLevel
和LogPath
的值优先于sf_client_config.json
文件中定义的值。如果无法找到或读取在
client_config_file
连接参数或SF_CLIENT_CONFIG_FILE
环境变量中指定的配置文件,则驱动程序将引发错误消息。
验证 OCSP 连接器或驱动程序版本¶
在连接到 Snowflake 时,Snowflake 使用 OCSP 评估证书链。驱动程序或连接器版本及其配置都决定了 OCSP 行为。有关驱动程序或连接器版本及其配置和 OCSP 行为的更多信息,请参阅 OCSP 配置。
OCSP 响应缓存服务器¶
备注
Snowflake ODBC 驱动程序 2.15.0 及更高版本目前支持 OCSP 响应缓存服务器。
Snowflake 客户端通过进行在实际传输数据之前建立安全连接的“握手”,启动与 Snowflake 服务端点的每个连接。作为握手的一部分,客户端会对服务端点的 TLS 证书进行身份验证。通过向 CA(证书颁发机构)的其中一个 OCSP(在线证书状态协议)服务器发送客户端证书请求,检查证书的撤销状态。
当 OCSP 服务器的响应出现超过合理时间的延迟时,连接会失败。以下缓存会保留撤销状态,这有助于缓解这些问题:
内存缓存,在进程的生命周期中保留该状态。
文件缓存,将该状态一直保留到缓存目录(例如
~/.cache/snowflake
或者~/.snowsql/ocsp_response_cache
)被清除。Snowflake OCSP 响应缓存服务器,它每小时提取一次来自 CA 的 OCSP 服务器的 OCSP 响应,并将这些响应存储 24 小时。然后,客户端可以从此服务器缓存中请求给定 Snowflake 证书的验证状态。
重要
如果服务器策略拒绝对大多数或所有外部 IP 地址和网站的访问,则 必须 将缓存服务器地址加入允许名单中,以允许正常的服务运行。缓存服务器主机名是
ocsp*.snowflakecomputing.cn:80
。如果因故需要禁用缓存服务器,请将
SF_OCSP_RESPONSE_CACHE_SERVER_ENABLED
环境变量设置为false
。请注意,该值区分大小写,并且 必须 为小写。
如果没有一个缓存层包含 OCSP 响应,则客户端会尝试直接从 CA 的 OCSP 服务器提取验证状态。