COF-C03 Question 53
Single answerParameter precedenceA Snowflake administrator is troubleshooting why a data engineer's session is timing out after 15 minutes of inactivity. The company wants most users to inherit an account-level setting of 60 minutes, but members of the ETL_ROLE should use 30 minutes, and one specific user, JSMITH, should use 15 minutes due to a shared workstation policy. The administrator verifies the following parameter settings for CLIENT_SESSION_KEEP_ALIVE are not involved and focuses only on SESSION_IDLE_TIMEOUT_MINS. The settings are:
- Account: SESSION_IDLE_TIMEOUT_MINS = 60
- User JSMITH: SESSION_IDLE_TIMEOUT_MINS = 15
- Role ETL_ROLE: SESSION_IDLE_TIMEOUT_MINS = 30
JSMITH connects to Snowflake and activates ETL_ROLE for the session. No session-level override is issued. Which timeout value will apply to JSMITH's session?
- A
15 minutes, because the user-level setting overrides the role-level and account-level settings when no session-level value is set
- B
30 minutes, because the active role for the session overrides both the user-level and account-level settings
- C
60 minutes, because account parameters are the default for all sessions unless explicitly changed in the session
- D
The timeout is unpredictable because user-level and role-level parameter settings conflict and Snowflake does not define precedence between them
Show answer and explanation
Correct answer: A
Explanation
Snowflake parameters can be set at multiple scopes, including account, user, session, and for certain parameters, role. The effective value is determined by precedence, with the more specific scope overriding the broader one. In this scenario, there is no session-level override, so the relevant comparison is among account, role, and user. The explicit user-level setting for JSMITH overrides both the ETL_ROLE setting and the account default, so the effective SESSION_IDLE_TIMEOUT_MINS value is 15. This aligns with Snowflake best practices for using account-level settings as defaults and applying narrower exceptions at the role or user level only when needed. Candidates should know that account parameters do not remain in effect when a more specific value is defined, and that active role usage does not automatically override a user-level parameter. Refer to Snowflake documentation on parameter hierarchy and setting parameters with ALTER ACCOUNT, ALTER USER, ALTER ROLE, and ALTER SESSION.
- A. Correct.
Correct. For parameters that can be set at multiple levels, Snowflake applies the most specific setting. A session-level setting would take highest precedence if present, but none is set here. Between user, role, and account, the user-level parameter takes precedence over the role-level and account-level values. Therefore, JSMITH's session uses 15 minutes.
- B. Incorrect.
Incorrect. This reflects a common misconception that the currently active role controls all parameter behavior. While some parameters can be set on roles, a user-level value is more specific than a role-level value for parameter resolution in this scenario, so 30 minutes does not apply.
- C. Incorrect.
Incorrect. The account-level setting acts as a default only when no more specific value exists. Because JSMITH has an explicit user-level value, the account-level 60-minute timeout is not used.
- D. Incorrect.
Incorrect. Snowflake does define parameter precedence. Parameter inheritance is deterministic, with more specific scopes overriding broader scopes. In this case, the presence of both a role-level and user-level value does not create ambiguity.