介绍

在过去,K2没有指定安装过程中要在其数据库上使用的标准排序规则。然而,现在K2引入了标准排序规则,以便在之后使用(如果我没有错的话,它是在4.7)。
因此, 问题出现在数据库的排序规则不是Latin1_General_CI_AS的情况,当您移动到新的 SQL server 并将默认值设置为Latin1_General_CI_AS时, 数据库将会不可用,表列、视图和用户定义表等主要组件都将受到影响。对于这些主要组件, 诸如存储过程、索引、函数等的子组件都受到了影响。

因此, 本文将指导您更改列排序规则。

注意: 这是根据 K2 4.7 数据库迁移记录的。

目标受众

您必须了解SQL Server、K2。

现在开始

规则与规则

排序规则只适用于某些列,这些列是NVARCHARVARCHAR和更多的文本列。所以我们必须关注这些列来改变排序规则。
要更改列的排序规则,我们必须遵守几个规则。这些是我遇到的规则:

  • 列不能被索引(也适用于主键、外键和约束键)。
  • 必须删除计算列(不能更改计算列排序规则)
  • 必须删除用户定义的表(不能直接更改列)

备份

开始之前必须做数据库备份!

建议创建2个文件夹,命名为DropCreate。脚本实际上是被隔离的,因为我们将对我们将执行什么以及我们应该运行哪个序列有一个更清晰的描述。也就是说,如果你对脚本有信心,你可以把它们组合在一起。(请注意,这实际上是一个非常巨大的脚本,如果你把它们全部结合起来)

生成脚本

以下是本练习之前需要准备的脚本列表:

  1. 删除索引、PK、FK、CK
  2. 删除计算列
  3. 删除存储过程、视图、用户定义的表和函数
  4. 创建索引、PK、FK、CK
  5. 创建计算列
  6. 创建存储过程、视图、用户定义的表和函数
  7. 更改列排序规则

供参考, 生成脚本的顺序将与下面的指南不一样, 因此只需根据步骤生成它, 我们就会看到最终的结果。

使用SQL Management Studio生成脚本

首先, 我们将生成以下内容的删除和创建脚本:

  1. 删除 SP、视图、函数和用户定义表的脚本
  2. 为函数、视图和用户定义的表创建脚本
  3. 为 SP 创建脚本

这些脚本都会通过SQL Management Studio来生成。

生成删除脚本

  1. 打开SQL Management Studio
  2. 转到 K2 数据库 > 右键单击 > 任务 > 生成脚本
  3. 选择视图、SP、用户定义的函数和用户定义的表类型, 然后单击 "下一步"
  4. 单击 "高级" 按钮, 选择Script Drop选项
  5. 完成后, 生成脚本。将其保存在Drop文件夹中并命名为6. Drop All SP View Fn UDT.sql

生成函数、视图和用户定义的表创建脚本

  1. 按照上面的步骤操作, 但只选择视图、用户定义的函数和用户定义的表类型
  2. 在高级中,把之前修改为Script Drop选项,在这里应该选择Script Create
  3. 完成后, 生成脚本。将其保存在Create文件夹中并命名为3. Create View Fn UDT.sql

生成存储过程创建脚本

  1. 按照上面的步骤操作, 但只选择存储过程
  2. 在高级中,把之前修改为Script Drop选项,在这里应该选择Script Create
  3. 完成后, 生成脚本。将其保存在Create文件夹中并命名为5. Create SP.sql

现在我们已经生成三个脚本了,分别是:

  1. 6. Drop All SP View Fn UDT.sql
  2. 3. Create View Fn UDT.sql
  3. 5. Create SP.sql

生成其它脚本

生成脚本-删除和创建
这是一个繁琐的部分, 您需要生成其余的脚本。

  1. Drop FK
  2. Drop Index
  3. Drop PK
  4. Drop CK
  5. Create CK
  6. Create PK
  7. Create Index
  8. Create FK

下载完上述脚本后, 可以执行脚本并按文件名保存。步骤如下:

  1. 打开1. Drop FK.doc文档文件, 复制内容, 粘贴到SQL Management studio
  2. 确保您在 K2 数据库上并执行它
  3. 一旦执行, 该语句将生成到消息框 (以绿色如上所述)。复制消息框内的文本,把它保存为sql文件(.sql)。
  4. 包含Drop文本的文件名, 请将其保存在Drop文件夹中。包含Create文本的文件名, 请将其保存在Create文件夹中。

生成脚本–更改列排序规则

这有点复杂, 在生成脚本后需要进行一些更改。请下载2. Alter Collation

  1. 打开2. Alter Collation.doc文件, 复制内容, 粘贴到SQL Management studio
  2. 确认归类名称参数 (@CollationName nvarchar (255)) 是正确的值。(这应该是要更改的排序规则名称)
  3. 确保您在 K2 数据库上并执行它
  4. 一旦执行, 该语句将生成到消息框中。复制消息框内的文本,把它保存为sql文件(.sql)。
  5. 找到以下四个句子并注释/删除:
    • 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…
  6. 将其保存在Create文件夹中。

在4.7 中, 注释的四语句实际上是表中的四个计算列。稍后将在另一个脚本中处理此问题。

标准脚本

我将提供3个脚本的其余部分,这将是这个练习所需要的。

  1. Update Database Collation
    要用.sql扩展保存到Create文件夹中,确保K2数据库名称正确。
  2. Create Column
    使用.sql扩展将其保存到Create文件夹中。请注意,列在4.7测试,这可能是不同的其他版本。
  3. Drop Columns
    使用SQL扩展将其保存到Drop文件夹中。请注意,在4.7中对列进行测试,这可能与其他版本不同。

文件摘要

通过以上, 你应该有下面的:

Drop文件夹:

Create文件夹:

执行脚本

根据文件命名, 您将基于从1开始的序列执行,先从Drop文件夹开始, 然后再执行Create文件夹脚本。

执行完成后, 受影响的列应更新到排序规则,通过检查列属性进行快速检查。

希望这篇文章为您提供帮助。

其他

虽然本文在K2数据库中,但当您更改其他数据库的排序规则时,也可以使用一些脚本,你只需要在操作过程中注意几个方面(计算列、函数等)。

K2 4.7 升级 数据库排序规则更改的更多相关文章

  1. 数据库排序规则的冲突(理解collate Chinese_PRC_CI_AS)

    之前碰到了数据库排序规则冲突问题,即百度或者 Google 的老话题: “ 无法解决 equal to 操作中‘ sql_latin1_general_cp1_ci_as ’和‘ chinese_pr ...

  2. SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法

    我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...

  3. mysql 数据库排序规则

    MySQL中的排序规则.在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有 ...

  4. 【mysql】mysql创建数据库,基字符集 和 数据库排序规则 的对比选择

    1.一般选择utf8.下面介绍一下utf8与utfmb4的区别. utf8mb4兼容utf8,且比utf8能表示更多的字符.至于什么时候用,看你的做什么项目了,到https://www.cnblogs ...

  5. 修改SQL Service数据库排序规则

    修改数据库 alter   database   KidsPang   COLLATE   Chinese_PRC_CI_AS 修改表中字段ALTER TABLE [Member] ALTER COL ...

  6. 关于mysql创建数据库,基字符集 和 数据库排序规则 的对比选择

    1.一般选择utf8.下面介绍一下utf8与utfmb4的区别. utf8mb4兼容utf8,且比utf8能表示更多的字符.至于什么时候用,看你的做什么项目了,unicode编码区从1 - 126就属 ...

  7. 修改sqlserver的数据库排序规则语句

    alter database SOETMS collate Chinese_PRC_CI_AS

  8. MS SQL 排序规则总结

    排序规则术语        什么是排序规则呢? 排序规则是根据特定语言和区域设置标准指定对字符串数据进行排序和比较的规则.SQL Server 支持在单个数据库中存储具有不同排序规则的对象.MSDN解 ...

  9. SQL 排序规则问题

    http://blog.csdn.net/delphigbg/article/details/12744807 MSSQL排序规则总结   什么是排序规则呢? 排序规则根据特定语言和区域设置标准指定对 ...

随机推荐

  1. cf623A. Graph and String(二分图 构造)

    题意 题目链接 Sol 可以这样考虑,在原图中没有边相连的点的值肯定是a / c 那么直接二分图染色即可 #include<bits/stdc++.h> #define LL long l ...

  2. HTML 5 <input> placeholder 属性 实现搜索框提示文字点击输入后消失

    H5之前要实现这个功能还要用到JS,H5出来之后新增加了placeholder属性,有了这个属性就就能轻松实现这个功能. 定义和用法 placeholder 属性提供可描述输入字段预期值的提示信息(h ...

  3. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  4. lua5.3+luasocket

    今天安装了luasocket,遇到了很多错误,百度并没有什么针对lua5.3的版本安装luasocket的文章,在这里记录一下. 1.下载lua5.3 下载到了lua-5.3.5.tar.gz版本的l ...

  5. angular-动画。

    ngAnimate插件是做什么的? ngAnimate插件如其名字一样是为元素提供动画的. 怎么定义动画? 第一步必须是引入插件 <script src="//cdn.bootcss. ...

  6. SQL索引未使用

    针对自己曾经经历过的一道面试题,那些情况不走索引,于是搜索网络和书籍的一些资料,整理如下: 1.查询谓词没有使用索引的主要边界,换句话说就是select *,可能会导致不走索引.比如,你查询的是SEL ...

  7. 在centos系统安装mongodb

    在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时, ...

  8. 解决eclipse 文件更新不自动刷新的问题

    打开eclipse 1. Window ===> Preferences ===> General ===> Workspace 2. 勾选 1> Refresh using ...

  9. SQL SERVER Management Studio编写SQL时没有智能提示的解决方式

    1. 检查设置里是否启用智能感知(Intellisence),可以在“工具”→“选项”里设置 2. 如果启用后还是无效,可以新建一个查询窗口查询,输入关键词的前面几个字母看是否有提示(或者使用Ctrl ...

  10. 转: c# 字符串公式计算

    C# 自动计算字符串公式的值(三种方式) 从网络上找到这段源码,重新整理后测试通过. 有三种方式可自动计算字符串公式的值:1. 最简单的方式,由SQL语句计算2. 使用Microsoft.Javasc ...