介绍
在过去,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.sql
3. Create View Fn UDT.sql
5. 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数据库中,但当您更改其他数据库的排序规则时,也可以使用一些脚本,你只需要在操作过程中注意几个方面(计算列、函数等)。