AWS DMS配置Babelfish为目标端点时用户无建表权限报错
AWS DMS连接Babelfish目标端点报建表权限缺失的解决方案
问题报错
Test Endpoint failed: Application-Status: 1020912, Application-Message: User does not have to create table permission Endpoint initialization failed.
根因说明
你当前的配置存在明确的权限遗漏,是导致报错的直接原因:
- 你仅为
dms_user授予了数据库内已有表的DML操作权限(SELECT、DELETE、INSERT、REFERENCES、UPDATE),未授予创建表所需的DDL权限。AWS DMS在端点初始化、执行全量迁移阶段,要么需要自动创建迁移目标表,要么会创建内部使用的元数据表,必须持有CREATE TABLE权限才能完成流程。 - 你未给用户配置目标schema的操作权限。Babelfish的T-SQL权限模型下,新创建的用户默认没有默认schema(通常是dbo)的ALTER权限,即便授予了数据库级CREATE TABLE权限,没有schema的ALTER权限依然无法完成建表操作。
修复步骤
通过1433端口连接Babelfish实例,切换到database_test数据库后执行以下授权语句:
USE database_test GO -- 授予数据库级建表权限 GRANT CREATE TABLE TO dms_user; GO -- 授予dbo schema的修改权限,允许用户在schema下创建对象 GRANT ALTER ON SCHEMA :: dbo TO dms_user; GO -- 补充DMS迁移所需的其他DDL权限,用于自动创建索引、外键约束 GRANT CREATE INDEX TO dms_user; GRANT CREATE REFERENCES TO dms_user; GO
额外校验项
完成授权后重新测试端点连接,如果依然失败可逐一核对以下配置:
- 确认DMS端点配置中填写的数据库名称为你创建的
database_test,而非Babelfish默认的系统库 - 确认DMS端点的连接端口为Babelfish的TDS端口1433,而非PostgreSQL原生端口5432
- 确认DMS配置中填写的账号密码与创建LOGIN时设置的凭据完全一致,Babelfish的SQL认证默认对密码大小写敏感
- 若你选择提前手动在目标库建表、关闭DMS的自动建表功能,仍需保留CREATE TABLE权限——多数版本的DMS会在初始化阶段创建内部元数据表,无该权限依然无法通过连接测试。
内容的提问来源于stack exchange,提问作者João Neto
相关产品推荐
相关产品推荐

