0

历史:前几天晚上我进行了一次部署,其中涉及执行创建存储过程的脚本。但是,在运行脚本时,数据库的整理发生了错误。

问题:在我们朋友 Google 的帮助下,我设法发现我遇到的问题是因为我们的实时环境的数据库有一个排序规则,而临时 DB 的排序规则不同,我在尝试插入时遇到错误到变量表中。

问题:最好的前进方式是什么,或者我的选择是什么?

环境:sql 2000

提前致谢。

4

3 回答 3

0

我们一直在使用与开发和生产数据库相关的用于集成测试的临时数据库遇到这个问题。我们所做的是确保所有数据库使用相同的排序规则。在您的情况下,您应该能够在脚本文件中进行简单的搜索/替换,并将排序规则更改为目标数据库中使用的排序规则。

编辑:改变脚本会让你现在前进;从长远来看,您需要确保在所有相关数据库中使用相同的排序规则。

于 2009-05-05T08:33:44.633 回答
0

有一些解决方案

  • 确保所有排序规则都在同一个数据库中匹配。否则你会受到一些痛苦。
  • 如果您的临时表不包含很多数据,正确的做法是使用与目标表相同的排序规则重新创建它们。
  • 如果这不是一个选项,请查找字符串类型,并强制您的整理到目标数据库之一

     INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
     SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
     FROM tmp_db..#TEMP_TABLE
    
于 2009-05-05T08:34:12.247 回答
-1

显而易见的解决方案是使用与生产数据库相同的排序规则重新安装您的开发数据库。

如果您不能,例如,如果您有多个具有不同排序规则的生产数据库,您可以确保您的更新整体上要么失败要么成功。围绕所有存储过程更新放置一个事务,并确保使用alter,而不是drop/create。

于 2009-05-05T08:19:47.477 回答