将 alembic 与 Azure Synapse SQL DW 一起使用的问题

Posted

技术标签:

【中文标题】将 alembic 与 Azure Synapse SQL DW 一起使用的问题【英文标题】:Issue with using alembic with Azure Synapse SQL DW 【发布时间】:2021-11-20 15:17:36 【问题描述】:

我正在尝试为 Azure Synapse DW 创建 Alembic 迁移。我不断收到以下错误:

[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]111214;An attempt to complete a transaction has failed. No corresponding transaction found.

alembic.ini 文件中我的连接字符串是:

sqlalchemy.url = mssql+pyodbc:///?odbc_connect=Driver=ODBC Driver 17 for SQL Server;Server=tcp:host,1433;Database=database;Uid=sqladminuser;Pwd=Password;Encrypt=yes;TrustServerCertificate=no;Connection+Timeout=30;

我正在尝试迁移的版本:

def upgrade():
    op.create_table(
        'test',
        sa.Column('id', sa.Integer, primary_key=True),
        sa.Column('description', sa.String, nullable=False),
        sa.Column('source_type', sa.String, nullable=False),
        sa.Column('source_schema', sa.String, nullable=False),
        sa.Column('source_entity', sa.String, nullable=False),
    )


def downgrade():
    op.drop_table('test')

【问题讨论】:

相关:github.com/sqlalchemy/sqlalchemy/issues/7065 【参考方案1】:

我按照 Gord 在 cmets 中提供的 github 链接解决了这个问题。我通过 sqlalchemy.url 更新为

mssql+pyodbc://user:password@host/server:1433/db?autocommit=True&driver=ODBC+Driver+17+for+SQL+Server

【讨论】:

以上是关于将 alembic 与 Azure Synapse SQL DW 一起使用的问题的主要内容,如果未能解决你的问题,请参考以下文章

Azure 分析服务与 Synapse 分析

Azure Synapse Analytics 版本控制

Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字

使用 ADF 将 azure blob 文件复制到 azure synapse

将 Parquet 文件从 Azure 数据湖存储帐户复制到 Synapse 数据仓库表失败

将 Azure Databricks 增量表迁移到 Azure Synapse SQL 池