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