
# 使用Babelfish迁移SQL Server数据库至TaurusDB for PostgreSQL
#### 操作场景
本文介绍如何将SQL Server数据库迁移至TaurusDB for PostgreSQL，实现平滑过渡。借助Babelfish的SQL Server兼容能力，可大幅减少代码适配工作，简化迁移流程，提高效率并节省资源。
#### 前提条件
- 已部署开启Babelfish的TaurusDB for PostgreSQL 实例。
- 已创建Babelfish账号。
- 已配置IP白名单，允许客户端所在服务器访问目标实例。
- 已安装SQL Server客户端工具（如sqlcmd）。
- 如需使用DRS迁移数据，需已开通华为云DRS服务。
 
#### 操作步骤
#### 步骤1：导出SQL Server数据库对象及数据
1. 连接SQL Server数据库
   1. 使用SQL Server Management Studio (SSMS) 客户端连接目标数据库。
   
   2. 在对象资源管理器中，右键目标数据库，选择 任务 \> 生成脚本(E)...。 ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002332922441.png "点击放大")
      
      
    
2. 配置脚本生成
   1. 简介：直接单击 下一步。
   
   2. 选择对象：勾选 为整个数据库及所有数据库对象编写脚本，单击 下一步。 ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002332954929.png "点击放大")
      
      
   
   3. 脚本编写选项：
      1. 选择 另存为脚本文件(F)，指定输出文件名。 ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002298995970.png "点击放大")
         
         
      
      2. 如需导出 数据定义语言 (DDL)，需在 高级(A) 选项中启用相应配置。 ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002299156826.png "点击放大")
         
         
      
      3. 如需导出 数据操作语言 (DML)，需在 高级(A) 选项中设置 仅限数据。 ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002298997638.png "点击放大")
         
         
       
    
3. 获取导出的SQL文件 脚本生成后，可在预设路径获取导出的 .sql 文件。
   
 
#### 步骤2：使用Babelfish Compass进行兼容性评估
运行 Babelfish Compass 工具，分析T-SQL语句在Babelfish中的支持情况，并进行适配优化。
说明：工具的获取及使用方式，请参考 [Babelfish Compass官方文档](https://github.com/babelfish-for-postgresql/babelfish_compass)。
#### 步骤3：导入DDL至Babelfish数据库
1. 连接Babelfish实例的TDS端口。 参考[通过sqlcmd命令行客户端连接TaurusDB for PostgreSQL实例](https://support.huaweicloud.com/usermanual-taurusdb-pg/taurusdb_03_0010.html)。
   
2. 执行DDL脚本。
   ```
   :r /path/to/your_ddl_script.sql
   GO
   ```
   
 
#### 步骤4：迁移数据至Babelfish
使用华为云DRS服务（推荐大批量数据，适合生产环境）进行迁移。
