diff --git a/Dockerfile.ci b/Dockerfile.ci
index 2379df5129777..a6b9e46da5d6f 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1414,6 +1414,7 @@ function check_upgrade_sqlalchemy() {
     echo
     uv sync --all-packages --no-install-package apache-airflow-providers-fab --resolution highest \
         --no-python-downloads --no-managed-python
+    uv pip install "sqlalchemy>=2.1.0b1" "snowflake-sqlalchemy @ git+https://github.com/snowflakedb/snowflake-sqlalchemy.git@main" --prerelease=allow
 }
 
 function check_downgrade_sqlalchemy() {
diff --git a/airflow-core/tests/unit/always/test_example_dags.py b/airflow-core/tests/unit/always/test_example_dags.py
index bd9c5478bd76d..066c6d70f97de 100644
--- a/airflow-core/tests/unit/always/test_example_dags.py
+++ b/airflow-core/tests/unit/always/test_example_dags.py
@@ -221,6 +221,11 @@ def test_should_be_importable(example: str, patch_get_dagbag_import_timeout):
         pytest.skip(
             f"Skipping {example} because it requires an optional provider feature that is not installed."
         )
+    # snowflake-sqlalchemy does not yet support SQLAlchemy 2.1
+    if len(dagbag.import_errors) == 1 and "ORMSelectCompileState" in str(dagbag.import_errors):
+        pytest.skip(
+            f"Skipping {example} because snowflake-sqlalchemy is incompatible with installed SQLAlchemy."
+        )
     assert len(dagbag.import_errors) == 0, f"import_errors={str(dagbag.import_errors)}"
     assert len(dagbag.dag_ids) >= 1
 
diff --git a/airflow-core/tests/unit/serialization/test_dag_serialization.py b/airflow-core/tests/unit/serialization/test_dag_serialization.py
index b8156abd67eb9..a23a1285ebf0e 100644
--- a/airflow-core/tests/unit/serialization/test_dag_serialization.py
+++ b/airflow-core/tests/unit/serialization/test_dag_serialization.py
@@ -576,6 +576,8 @@ def test_serialization(self):
                 f"{ignore_module_import_error}" not in error
                 for ignore_module_import_error in IGNORE_MODULE_IMPORT_ERRORS
             )
+            # snowflake-sqlalchemy does not yet support SQLAlchemy 2.1
+            if "module 'sqlalchemy.orm.context' has no attribute 'ORMSelectCompileState'" not in error
         }
 
         # Let's not be exact about this, but if everything fails to parse we should fail this test too
diff --git a/providers/common/sql/tests/unit/common/sql/operators/test_sql.py b/providers/common/sql/tests/unit/common/sql/operators/test_sql.py
index 14380b717363c..c5aaba72548ef 100644
--- a/providers/common/sql/tests/unit/common/sql/operators/test_sql.py
+++ b/providers/common/sql/tests/unit/common/sql/operators/test_sql.py
@@ -72,6 +72,14 @@
 
 pytestmark = pytest.mark.db_test
 
+# snowflake-sqlalchemy does not yet support SQLAlchemy 2.1
+try:
+    from snowflake.sqlalchemy import URL  # noqa: F401
+
+    _snowflake_sqlalchemy_available = True
+except (ImportError, AttributeError):
+    _snowflake_sqlalchemy_available = False
+
 
 class MockHook:
     def get_records(self):
@@ -735,6 +743,10 @@ def test_not_allowed_conn_type(self):
                 self._operator._hook
 
     @skip_if_force_lowest_dependencies_marker
+    @pytest.mark.skipif(
+        not _snowflake_sqlalchemy_available,
+        reason="snowflake-sqlalchemy is incompatible with installed SQLAlchemy",
+    )
     def test_sql_operator_hook_params_snowflake(self):
         with mock.patch(
             "airflow.providers.common.sql.operators.sql.BaseHook.get_connection",
@@ -770,6 +782,10 @@ def test_sql_operator_hook_params_biguery(self):
             assert self._operator._hook.location == "us-east1"
 
     @skip_if_force_lowest_dependencies_marker
+    @pytest.mark.skipif(
+        not _snowflake_sqlalchemy_available,
+        reason="snowflake-sqlalchemy is incompatible with installed SQLAlchemy",
+    )
     def test_sql_operator_hook_params_templated(self):
         with mock.patch(
             "airflow.providers.common.sql.operators.sql.BaseHook.get_connection",
diff --git a/providers/snowflake/tests/conftest.py b/providers/snowflake/tests/conftest.py
index f56ccce0a3f69..a27af1d4514e5 100644
--- a/providers/snowflake/tests/conftest.py
+++ b/providers/snowflake/tests/conftest.py
@@ -17,3 +17,9 @@
 from __future__ import annotations
 
 pytest_plugins = "tests_common.pytest_plugin"
+
+# snowflake-sqlalchemy does not yet support SQLAlchemy 2.1
+try:
+    from snowflake.sqlalchemy import URL  # noqa: F401
+except AttributeError:
+    collect_ignore_glob = ["*"]
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 18f2efbe67392..283a3b9957bff 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -339,6 +339,7 @@ function check_upgrade_sqlalchemy() {
     echo
     uv sync --all-packages --no-install-package apache-airflow-providers-fab --resolution highest \
         --no-python-downloads --no-managed-python
+    uv pip install "sqlalchemy>=2.1.0b1" "snowflake-sqlalchemy @ git+https://github.com/snowflakedb/snowflake-sqlalchemy.git@main" --prerelease=allow
 }
 
 # Download minimum supported version of sqlalchemy to run tests with it
