JDBC 驱动程序连接参数参考¶
本主题列出了可用于配置 JDBC 驱动程序的连接参数。您可以在 JDBC 连接字符串 或 Java Properties
对象中设置这些参数。
本主题内容:
必填参数¶
本节列出了必须在连接字符串或属性 Map
中设置的参数。
备注
还必须设置 身份验证参数。
user
¶
- 描述:
指定连接的用户登录名。
身份验证参数¶
allowUnderscoresInHost
¶
- 描述:
指定是否允许在账户名中使用下划线。JDBC 驱动程序不支持在 URLs 中(其中包含账户名)使用下划线,因为 JDBC 驱动程序会自动将下划线转换为连字符。默认值为
false
。备注
从版本 3.13.25 开始,Snowflake JDBC 驱动程序会将
allowUnderscoresInHost
参数的默认值更改为false
。此更改影响账户名包含下划线的 PrivateLink 客户。在这种情况下,必须通过将allowUnderscoresInHost
设置为true
来替换默认值。
authenticator
¶
- 描述:
指定用于验证用户登录凭据的身份验证器。您可以将此设置为以下某个值:
snowflake
,以使用内部 Snowflake 身份验证器。
externalbrowser
,使用您的 Web 浏览器 与 Okta、AD FS 或已为账户定义的其他兼容 SAML 2.0 的身份提供商 (IdP) 进行身份验证。:code:` https:/ (https:/)/<okta_account_name>.okta.com ` (即 Okta 账户的 URL 端点),:ref:` 通过原生 Okta 进行身份验证 <label-native-sso-okta>` (仅当 IdP 是 Okta 时才受支持)。
oauth
,使用 OAuth 进行身份验证。如果将 OAuth 指定为身份验证器,则还必须设置token
参数来指定 OAuth 令牌(参阅下文)。
snowflake_jwt
,以使用密钥对身份验证进行身份验证。有关密钥对身份验证的更多详细信息,请参阅 使用密钥对身份验证和密钥轮换。
username_password_mfa
,使用 MFA 令牌缓存进行身份验证。有关更多详细信息,请参阅 使用多重身份验证如果连接字符串指定了密钥对,则即使
authenticator
参数未设置或设置为“snowflake”,也将使用密钥对身份验证。有关身份验证的更多信息,请参阅 管理/使用联合身份验证 和 客户端、驱动程序和连接器。
- 默认值:
snowflake
disableGcsDefaultCredentials
¶
- 描述:
指定使用 GCP (Google Cloud Platform) 时是否使用默认凭据查询来取代外部应用程序默认凭据。
默认情况下,GCP 用户可使用多种选项在 Snowflake 以外设置 Google 应用程序默认凭据。有时,这些身份验证方法可能会干扰源自 Snowflake JDBC 驱动程序的云存储操作。在这种情况下,您可以将该值设置为
true
,以强制驱动程序忽略其他来源的 GCP 凭据。您也可以使用
net.snowflake.jdbc.disableGcsDefaultCredentials
Java 属性来达到相同的效果。- 默认值:
false
disableSamlURLCheck
¶
- 描述:
指定是否禁用 SAML 响应的验证检查。
- 默认值:
false
passcode
¶
- 描述:
指定用于多重身份验证的密码。
有关多重身份验证的更多信息,请参阅 MFA(多重身份验证)。
passcodeInPassword
¶
- 描述:
指定了是否将多重身份验证的密码追加到密码中:
on
(或true
)表示追加密码。
off`(或 :code:`false
)或任何其他值表示不追加密码。- 默认值:
off
password
¶
- 描述:
指定指定用户的密码。
指定密码有以下两种方法:
第一种方法是直接将用户 ID 和密码传递给
getConnection
方法:String user = "<user>"; // replace "<user>" with your user name String password = "<password>"; // replace "<password>" with your password Connection con = DriverManager.getConnection("jdbc:snowflake://<account>.snowflakecomputing.cn/", user, password);第二种方法是创建一个
Properties
对象,用密码更新该对象,并将对象传递给getConnection
方法:String user = "<user>"; // replace "<user>" with your user name String password = "<password>"; // replace "<password>" with your password Properties props = new Properties(); props.put("user", user); props.put("password", password); Connection con = DriverManager.getConnection("jdbc:snowflake://<account>.snowflakecomputing.cn/", props);注意
我们强烈建议您 不要 在 JDBC 连接字符串中直接包含用户密码,因为使用该字符串连接到 Snowflake 的客户端应用程序可能会无意中暴露该密码。相反,请使用应用程序提供的接口来指定用户密码。
privatekey
¶
- 描述:
指定指定用户的私钥。请参阅 使用密钥对身份验证和密钥轮换。
private_key_base64
¶
- 描述:
为指定用户指定 base64 编码私钥。请参阅 使用密钥对身份验证和密钥轮换。
private_key_file
¶
- 描述:
指定指定用户的私钥文件的路径。请参阅 使用密钥对身份验证和密钥轮换。
private_key_file_pwd
¶
- 描述:
(已弃用)请改用 private_key_pwd。
private_key_pwd
¶
- 描述:
指定用于解密指定用户的私钥文件或 base64 编码私钥的密码。请参阅 使用密钥对身份验证和密钥轮换。
token
¶
- 描述:
指定要用于身份验证的 OAuth 令牌,其中
<string>
为令牌。此参数仅在将 authenticator 参数设置为oauth
时才是必需的,但下文所述情况除外。备注
从版本 3.13.24 开始,Snowflake JDBC 驱动程序允许您在连接密码中发送 OAuth 令牌,并将其包含在
token
配置参数中。如果未指定token
配置参数,则Driver.connect()
方法会将令牌存储在连接密码中。此功能主要支持在连接池中使用 OAuth 身份验证,允许您根据需要传递刷新的令牌,而不是受
token
配置参数中指定的过期令牌的限制。例如,您可以在
getConnection()
方法属性中传递令牌作为密码,而不是设置token
配置参数,类似于以下内容:Properties props = new Properties(); props.put("user", "myusername"); props.put("authenticator", "oauth"); props.put("role", "myrole"); props.put("password", "xxxxxxxxxxxxx"); // where xxxxxxxxxxxxx is the token string Connection myconnection = DriverManager.getConnection(url, props);- 默认值:
无
默认数据库、角色、架构和仓库的参数¶
db
¶
- 描述:
指定连接后要使用的默认数据库,或指定空字符串。指定的数据库应该是指定的默认角色对其具有权限的现有数据库。
如果连接后需要使用其他数据库,请执行 USE DATABASE 命令。
role
¶
schema
¶
- 描述:
指定连接后用于指定数据库的默认架构,或指定空字符串。指定的架构应是指定的默认角色对其具有权限的现有架构。
如果连接后需要使用其他架构,请执行 USE SCHEMA 命令。
warehouse
¶
- 描述:
指定连接后要使用的虚拟仓库,或指定空字符串。指定的仓库应是指定的默认角色对其具有权限的现有仓库。
如果连接后需要使用其他仓库,可执行 USE WAREHOUSE 命令为会话设置不同的仓库。
代理参数¶
disableSocksProxy
¶
- 描述:
指定驱动程序是否应忽略在 Java 系统选项中指定的 SOCKS 代理配置:
on
(或true
)指定忽略代理。
off
(或false
)或指定使用代理的任何其他值。备注
设置此连接参数会改变同一 JVM (Java 虚拟机)上所有 连接 的行为。
- 默认值:
off
nonProxyHosts
¶
- 描述:
指定驱动程序应绕过代理服务器直接连接的主机列表。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
proxyHost
¶
- 描述:
指定要使用的代理服务器的主机名。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
proxyPassword
¶
- 描述:
指定用于对代理服务器进行身份验证的密码。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
proxyPort
¶
- 描述:
指定要使用的代理服务器的端口号。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
proxyProtocol
¶
- 描述:
指定用于连接代理服务器的协议。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
- 默认值:
http
proxyUser
¶
- 描述:
指定用于向代理服务器进行身份验证的用户名。有关详细信息,请参阅 在 JDBC 连接字符串中指定代理服务器。
useProxy
¶
- 描述:
指定驱动程序是否应使用代理:
on
(或true
)指定驱动程序应使用代理。
off`(或 :code:`false
)或任何其他值指定驱动程序不应使用代理。如果存在 JVM 代理参数,则此设置无效。请参阅 在 JDBC 连接字符串中指定代理服务器。
- 默认值:
off
超时参数¶
loginTimeout
¶
- 描述:
指定连接到 Snowflake 服务时,返回登录失败错误之前等待响应的秒数。
- 默认值:
60
networkTimeout
¶
- 描述:
指定与 Snowflake 服务交互时,返回错误之前等待响应的毫秒数。
0
(零)指定不设置网络超时。- 默认值:
0
net.snowflake.jdbc.http_client_connection_timeout_in_ms
¶
- 描述:
指定等待与远程主机完全建立新连接(包括 TLS 协商)的最长时间,以毫秒为单位。
您还可以使用
${HTTP_CLIENT_CONNECTION_TIMEOUT}
在连接字符串中设置此项。
- 默认值:
:code:`60000`(1 分钟)
net.snowflake.jdbc.http_client_socket_timeout_in_ms
¶
- 描述:
指定成功建立连接后等待数据的最长时间(在两个数据包之间处于非活动状态的时间),以毫秒为单位。
您还可以使用
${HTTP_CLIENT_SOCKET_TIMEOUT}
在连接字符串中设置此项。
- 默认值:
300000
(5 分钟)
queryTimeout
¶
- 描述:
指定在返回错误之前等待查询完成的秒数。
0
(零)指定驱动程序应无限期等待。- 默认值:
0
其他参数¶
application
¶
- 描述:
仅限 Snowflake 合作伙伴使用:指定要通过 JDBC 连接的合作伙伴应用程序的名称。
client_config_file
¶
- 描述:
指定 日志记录配置文件 的路径,您可以使用该配置文件定义日志记录级别和保存日志文件的目录。
DIAGNOSTICS_ALLOWLIST_FILE
¶
- 描述:
包含 SYSTEM$ALLOWLIST 或 SYSTEM$ALLOWLIST_PRIVATELINK 函数输出的 JSON 文件的完整路径和文件名。
如果
ENABLE_DIAGNOSTICS
是true
,您必须提供此参数。
ENABLE_DIAGNOSTICS
¶
- 描述:
当
true
和调用应用程序调用DriverManager
或DataSource
getConnection()
方法时,驱动程序运行几项连接测试,并将结果写入预配置的日志文件。驱动程序还返回以下异常:net.snowflake.client.jdbc.SnowflakeSQLException: A connection was not created because the driver is running in diagnostics mode. If this is unintended then disable diagnostics check by removing the ENABLE_DIAGNOSTICS connection parameter
如果启用此参数,您必须为
DIAGNOSTICS_ALLOWLIST_FILE
参数提供一个值。- 默认值:
false
enablePatternSearch
¶
- 描述:
启用或禁用不应将其参数用作模式的
getCrossReference
、getExportedKeys
、getImportedKeys
和getPrimaryKeys
元数据操作的模式搜索。- 默认值:
true
enablePutGet
¶
- 描述:
指定是否允许 PUT 和 GET 命令访问本地文件系统。将该值设置为
false
会禁用 PUT 和 GET 命令执行。- 默认值:
true
JDBC_ARROW_TREAT_DECIMAL_AS_INT
¶
- 描述:
指定是否将
getObject
调用获得的 Arrow 结果集中的所有数字作为整型返回。如果此值和 JDBC_TREAT_DECIMAL_AS_INT 参数值都是false
,则getObject
调用获得的 Arrow 返回集中的所有整型数都将作为BigDecimal
类型返回。- 默认值:
true
JDBC_DEFAULT_FORMAT_DATE_WITH_TIMEZONE
¶
- 描述:
指定是否使用以前硬编码的格式化程序值(对于向后兼容)。
- 默认值:
true
JDBC_GET_DATE_USE_NULL_TIMEZONE
¶
- 描述:
指定是否使用先前的空时区值用于
getDate
方法(适用于向后兼容性)。- 默认值:
true
maxHttpRetries
¶
- 描述:
指定在返回错误之前重试失败 HTTP 请求的最大次数。
- 默认值:
7
net.snowflake.jdbc.max_connections
¶
- 描述:
指定连接池中可用的最大连接总数。
- 默认值:
300
net.snowflake.jdbc.max_connections_per_route
¶
- 描述:
指定单个端口或 URL 允许的最大连接数。值不能超过 net.snowflake.jdbc.max_connections 值。
- 默认值:
300
net.snowflake.jdbc.objectMapper.maxJsonStringLength
¶
- 描述:
指定字符串的最大字节数。如果您收到类似于以下内容的错误消息,可以增加此 Java 属性的值来为 Snowflake 响应反序列化设置更大的缓冲区:
com.fasterxml.jackson.core.exc.StreamConstraintsException: String length (XXXXXXX) exceeds the maximum length (180000000)
- 默认值:
180000000
ocspFailOpen
¶
- 描述:
指定在无法访问 OCSP 服务器以验证证书时,驱动程序应“故障打开”。请参阅 OCSP。
putGetMaxRetries
¶
- 描述:
指定存储客户端重试 PUT/GET 异常的最大次数。
- 默认值:
25
stringsQuotedForColumnDef
¶
- 描述:
如果此参数设置为
true
,则当DatabaseMetaData.getColumns()
和DatabaseMetaData.getProcedureColumns()
在列 COLUMN_DEF 中返回类型为String
的值时,该值将嵌入在单引号内。(如果该值的数据类型不是String
,则该值不被引用,无论该参数的设置如何。)
true
指定字符串值应嵌入单引号(引号是字符串的一部分,而不是分隔符)。这符合 JDBC 标准。
false
指定字符串值不嵌入在单引号内。- 默认值:
false
tracing
¶
- 描述:
指定驱动程序的日志级别。驱动程序使用标准 Java 日志实用程序。您可以将此参数设置为以下日志级别之一:
OFF
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
ALL
- 默认值:
INFO