You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server导出向导datetime列默认映射异常,如何配置默认映射?

调整SQL Server导出向导的默认类型映射规则

好问题!我之前跨版本导出数据库时也碰到过这个默认映射的坑,确实可以修改这个规则,不过得调整导出向导背后的配置文件,或者用更灵活的替代方案,下面详细说明:

方法一:修改全局类型映射配置文件

SQL Server导出向导基于SSIS,它的类型映射规则存储在XML配置文件里,操作步骤如下:

  1. 找到对应版本的映射文件路径:
    对于SQL Server 2017(版本号140),路径一般是:
    C:\Program Files (x86)\Microsoft SQL Server\140\DTS\MappingFiles\MSSQLToMSSQL.xml
    
  2. 以管理员身份打开编辑器(比如Notepad++),编辑这个XML文件:
    搜索<SourceDataType Name="datetime">节点,你会看到默认的目标类型是smalldatetime,类似这样:
    <SourceDataType Name="datetime">
      <DestinationDataType Name="smalldatetime" />
    </SourceDataType>
    
    把目标类型改成datetime
    <SourceDataType Name="datetime">
      <DestinationDataType Name="datetime" />
    </SourceDataType>
    
  3. 保存文件,重启SSMS确保配置生效,之后导出向导的默认映射就会把datetime保留为datetime了。

注意事项

  • 修改前一定要备份原XML文件,避免配置出错无法恢复。
  • 这个修改是全局生效的,所有后续使用导出向导的操作都会遵循新的映射规则,如果只是个别导出需要调整,不建议改全局配置。
  • 目标SQL Server 2014完全支持datetime类型,所以这个修改不会有兼容性问题。

方法二:单次导出时手动调整(无需改全局)

如果只是偶尔导出,更省事的方法是在导出向导的列映射步骤手动修改:

  • 进入“选择源表和视图”步骤后,点击“编辑映射”按钮。
  • 在弹出的窗口里,找到所有datetime类型的列,把目标类型从smalldatetime改成datetime,保存后继续导出即可。

方法三:用生成脚本替代导出向导

另一种更灵活的跨版本导出方式是使用SSMS的生成脚本功能:

  1. 右键源数据库(2017)→ 任务 → 生成脚本。
  2. 在向导里选择要导出的对象(整个数据库或指定表)。
  3. 进入“设置脚本选项”步骤,点击“高级”按钮:
    • 把“脚本数据”设为True(如果需要导出数据)。
    • 把“目标服务器版本”选择为SQL Server 2014
  4. 生成脚本后,在SQL Server 2014实例上执行脚本,这样datetime列会完全保留原类型,不会被自动转换。

内容的提问来源于stack exchange,提问作者Anonymous

火山引擎 最新活动