历史: 我在另一个晚上进行了部署,其中涉及执行创建存储过程的脚本。但是,在运行脚本时,会发生有关DB排序规则的错误。
问题: 在我们的朋友谷歌的帮助下,我设法发现我遇到的问题是因为在我们的实时环境中,db有一个排序规则并且临时DB的排序规则不同,我在尝试插入变量时遇到错误表
问题: 什么是最好的前进方式,或者我的选择?
环境: sql 2000
提前致谢。
答案 0 :(得分:0)
我们一直在使用我们用于集成测试的临时数据库,与开发和生产数据库相关。我们所做的是确保所有数据库使用相同的排序规则。在您的情况下,您可能应该能够在脚本文件中进行简单的搜索/替换,只需将归类更改为目标数据库中使用的归类。
编辑:更改脚本会让你现在前进;从长远来看,您需要确保在所有相关数据库中使用相同的排序规则。
答案 1 :(得分:0)
有一些解决方案
如果这不是一个选项,请查找字符串类型,并强制整理到目标数据库
INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
FROM tmp_db..#TEMP_TABLE
答案 2 :(得分:-1)
显而易见的解决方案是使用与生产数据库相同的排序规则重新安装开发数据库。
如果您不能,例如,如果您有多个具有不同排序规则的生产数据库,则可以确保您的更新失败或整体成功。在所有存储过程更新周围放置一个事务,并确保使用alter,而不是drop / create。