K2 4.7 升级 数据库排序规则更改
介绍
在过去,K2没有指定安装过程中要在其数据库上使用的标准排序规则。然而,现在K2引入了标准排序规则,以便在之后使用(如果我没有错的话,它是在4.7)。
因此, 问题出现在数据库的排序规则不是Latin1_General_CI_AS的情况,当您移动到新的 SQL server 并将默认值设置为Latin1_General_CI_AS时, 数据库将会不可用,表列、视图和用户定义表等主要组件都将受到影响。对于这些主要组件, 诸如存储过程、索引、函数等的子组件都受到了影响。
因此, 本文将指导您更改列排序规则。
注意: 这是根据 K2 4.7 数据库迁移记录的。
目标受众
您必须了解SQL Server、K2。
现在开始
规则与规则
排序规则只适用于某些列,这些列是NVARCHAR、VARCHAR和更多的文本列。所以我们必须关注这些列来改变排序规则。
要更改列的排序规则,我们必须遵守几个规则。这些是我遇到的规则:
- 列不能被索引(也适用于主键、外键和约束键)。
- 必须删除计算列(不能更改计算列排序规则)
- 必须删除用户定义的表(不能直接更改列)
备份
开始之前必须做数据库备份!
建议创建2个文件夹,命名为Drop和Create。脚本实际上是被隔离的,因为我们将对我们将执行什么以及我们应该运行哪个序列有一个更清晰的描述。也就是说,如果你对脚本有信心,你可以把它们组合在一起。(请注意,这实际上是一个非常巨大的脚本,如果你把它们全部结合起来)
生成脚本
以下是本练习之前需要准备的脚本列表:
- 删除索引、PK、FK、CK
- 删除计算列
- 删除存储过程、视图、用户定义的表和函数
- 创建索引、PK、FK、CK
- 创建计算列
- 创建存储过程、视图、用户定义的表和函数
- 更改列排序规则
供参考, 生成脚本的顺序将与下面的指南不一样, 因此只需根据步骤生成它, 我们就会看到最终的结果。
使用SQL Management Studio生成脚本
首先, 我们将生成以下内容的删除和创建脚本:
- 删除 SP、视图、函数和用户定义表的脚本
- 为函数、视图和用户定义的表创建脚本
- 为 SP 创建脚本
这些脚本都会通过SQL Management Studio来生成。
生成删除脚本
- 打开
SQL Management Studio - 转到 K2 数据库 > 右键单击 > 任务 > 生成脚本
- 选择视图、SP、用户定义的函数和用户定义的表类型, 然后单击 "下一步"

- 单击 "高级" 按钮, 选择
Script Drop选项

- 完成后, 生成脚本。将其保存在
Drop文件夹中并命名为6. Drop All SP View Fn UDT.sql
生成函数、视图和用户定义的表创建脚本
- 按照上面的步骤操作, 但只选择视图、用户定义的函数和用户定义的表类型
- 在高级中,把之前修改为
Script Drop选项,在这里应该选择Script Create - 完成后, 生成脚本。将其保存在
Create文件夹中并命名为3. Create View Fn UDT.sql
生成存储过程创建脚本
- 按照上面的步骤操作, 但只选择存储过程
- 在高级中,把之前修改为
Script Drop选项,在这里应该选择Script Create - 完成后, 生成脚本。将其保存在
Create文件夹中并命名为5. Create SP.sql
现在我们已经生成三个脚本了,分别是:
6. Drop All SP View Fn UDT.sql3. Create View Fn UDT.sql5. Create SP.sql
生成其它脚本
生成脚本-删除和创建
这是一个繁琐的部分, 您需要生成其余的脚本。
下载完上述脚本后, 可以执行脚本并按文件名保存。步骤如下:
- 打开
1. Drop FK.doc文档文件, 复制内容, 粘贴到SQL Management studio - 确保您在 K2 数据库上并执行它

- 一旦执行, 该语句将生成到消息框 (以绿色如上所述)。复制消息框内的文本,把它保存为
sql文件(.sql)。 - 包含
Drop文本的文件名, 请将其保存在Drop文件夹中。包含Create文本的文件名, 请将其保存在Create文件夹中。
生成脚本–更改列排序规则
这有点复杂, 在生成脚本后需要进行一些更改。请下载2. Alter Collation。
- 打开
2. Alter Collation.doc文件, 复制内容, 粘贴到SQL Management studio - 确认归类名称参数 (@CollationName nvarchar (255)) 是正确的值。(这应该是要更改的排序规则名称)
- 确保您在 K2 数据库上并执行它
- 一旦执行, 该语句将生成到消息框中。复制消息框内的文本,把它保存为
sql文件(.sql)。 - 找到以下四个句子并注释/删除:
- ALTER TABLE [Identity].[Identity] ALTER COLUMN [DisplayName] nvarchar(448) COLLATE…
- ALTER TABLE [Identity].[Identity] ALTER COLUMN [Email] nvarchar(128) COLLATE…
- ALTER TABLE [SmartBroker].[SmartObject] ALTER COLUMN [Name_XML] nvarchar(450) COLLATE…
- ALTER TABLE [SmartBroker].[SmartObject] ALTER COLUMN [DisplayName_XML] nvarchar(450) COLLATE…
- 将其保存在
Create文件夹中。
在4.7 中, 注释的四语句实际上是表中的四个计算列。稍后将在另一个脚本中处理此问题。
标准脚本
我将提供3个脚本的其余部分,这将是这个练习所需要的。
- Update Database Collation
要用.sql扩展保存到Create文件夹中,确保K2数据库名称正确。 - Create Column
使用.sql扩展将其保存到Create文件夹中。请注意,列在4.7测试,这可能是不同的其他版本。 - Drop Columns
使用SQL扩展将其保存到Drop文件夹中。请注意,在4.7中对列进行测试,这可能与其他版本不同。
文件摘要
通过以上, 你应该有下面的:
Drop文件夹:

Create文件夹:

执行脚本
根据文件命名, 您将基于从1开始的序列执行,先从Drop文件夹开始, 然后再执行Create文件夹脚本。
执行完成后, 受影响的列应更新到排序规则,通过检查列属性进行快速检查。
希望这篇文章为您提供帮助。
其他
虽然本文在K2数据库中,但当您更改其他数据库的排序规则时,也可以使用一些脚本,你只需要在操作过程中注意几个方面(计算列、函数等)。
K2 4.7 升级 数据库排序规则更改的更多相关文章
- 数据库排序规则的冲突(理解collate Chinese_PRC_CI_AS)
之前碰到了数据库排序规则冲突问题,即百度或者 Google 的老话题: “ 无法解决 equal to 操作中‘ sql_latin1_general_cp1_ci_as ’和‘ chinese_pr ...
- SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法
我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...
- mysql 数据库排序规则
MySQL中的排序规则.在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有 ...
- 【mysql】mysql创建数据库,基字符集 和 数据库排序规则 的对比选择
1.一般选择utf8.下面介绍一下utf8与utfmb4的区别. utf8mb4兼容utf8,且比utf8能表示更多的字符.至于什么时候用,看你的做什么项目了,到https://www.cnblogs ...
- 修改SQL Service数据库排序规则
修改数据库 alter database KidsPang COLLATE Chinese_PRC_CI_AS 修改表中字段ALTER TABLE [Member] ALTER COL ...
- 关于mysql创建数据库,基字符集 和 数据库排序规则 的对比选择
1.一般选择utf8.下面介绍一下utf8与utfmb4的区别. utf8mb4兼容utf8,且比utf8能表示更多的字符.至于什么时候用,看你的做什么项目了,unicode编码区从1 - 126就属 ...
- 修改sqlserver的数据库排序规则语句
alter database SOETMS collate Chinese_PRC_CI_AS
- MS SQL 排序规则总结
排序规则术语 什么是排序规则呢? 排序规则是根据特定语言和区域设置标准指定对字符串数据进行排序和比较的规则.SQL Server 支持在单个数据库中存储具有不同排序规则的对象.MSDN解 ...
- SQL 排序规则问题
http://blog.csdn.net/delphigbg/article/details/12744807 MSSQL排序规则总结 什么是排序规则呢? 排序规则根据特定语言和区域设置标准指定对 ...
随机推荐
- (文章也有问题,请自行跳过)react中的状态机每次setState都是重新创建新的对象,如需取值,应该在render中处理。
demo如下 class Demo4StateLearn extends React.Component { constructor(props) { super(props); this.state ...
- Pig安装与应用
1. 参考说明 参考文档: http://pig.apache.org/docs/r0.17.0/start.html#build 2. 安装环境说明 2.1. 环境说明 CentOS7.4+ ...
- 灰度图的直方图均衡化(Histogram Equalization)原理与 Python 实现
原理 直方图均衡化是一种通过使用图像直方图,调整对比度的图像处理方法:通过对图像的强度(intensity)进行某种非线性变换,使得变换后的图像直方图为近似均匀分布,从而,达到提高图像对比度和增强图片 ...
- BackgroundWorker原理剖析
BackgroundWorker类位于System.ComponentModel命名空间下,主要用来异步执行一个长时间的操作,然后,在完成事件中安全更新UI的控件属性.UI中的控件是不允许非创建该控件 ...
- 创建和修改 ExpressRoute 线路
本文介绍如何使用 Azure 门户和 Azure Resource Manager 部署模型创建 Azure ExpressRoute 线路. 以下步骤还说明如何查看线路状态,以及如何更新.删除和取消 ...
- Vue2学习笔记:实例生命周期
实例生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM .在这个 ...
- 模板与STL学习简单的笔记
一.如何进行泛型编程 C/C++是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后再运行,一旦编译好之后就不能再变了(数据类型也就必须确定下无法更改,因此要为每一种数据类型编写一份算 ...
- Linux wc命令详解
wc常见命令参数 wc -l : 统计行 wc -c: 统计字节数 wc -m:统计字符数,不能与-c同时使用 wc -w:统计字数 wc -L:打印最长长度 注意: wc 可以直接后面跟文件使用,但 ...
- Hybris阶段总结(1)何为hybris
按照谷歌出来的结果,大体意思是“Hybris Commerce是一套完善的电子商务解决方案,基于开放标准构建,功能强大,且具有模块化的特点,旨在为满足企业的商务需求提供坚实的基础”. 当然对于我这样 ...
- windows 查看端口号,杀进程
查看端口号: 开始--运行--cmd netstat –and 杀进程: windows任务管理器 查看--显示列-PID 相关知识: 一台机器的80端口被httpd (apache) ...