zoukankan      html  css  js  c++  java
  • 修改SQL Server 的排序规则(转)

    转自http://jimshu.blog.51cto.com/3171847/1095780/

    一、修改SQL Server服务器(实例)的排序规则

      以下实验使用了SQL Server 2008 R2的默认实例,将Chinese_PRC_CI_AS修改成SQL_Latin1_General_CP1_CI_AS。

    1. 停止SQL Server实例服务

    2. 打开“命令提示符”,转到SQL Server的安装目录

    C:UsersAdministrator> cd "Program FilesMicrosoft SQL Server100Setup BootstrapSQLServer2008R2"

    3. 运行setup

    C:Program FIlesMicrosoft SQL Server100Setup BootstrapSQLServer2008R2> setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /SQLSYSADMINACCOUNTS=administrator /sqlcollation=SQL_Latin1_General_CP1_CI_AS

    4. 启动SQL Server实例服务

     

    5. 验证实例的排序规则

    133759426.png

    6. 验证系统数据库(master、model、msdb、tempdb)的排序规则

    133818927.png

    说明:此操作仅影响系统数据库。对于已经存在的用户数据库无效。

    二、修改数据库的排序规则

      以下实验将修改数据库db01的排序规则,将SQL_Latin1_General_CP1_CI_AS修改成Chinese_PRC_CI_AS。

    1. SSMS图形界面

    143403663.png

    2. 脚本

    ALTER DATABASE [db01] COLLATE Chinese_PRC_CI_AS

    3. 局限性

    (1)对于已经存在的数据,此操作并不会导致立即重新排序。

    (2)如果已经有对象依赖于数据库排序规则,则更改不成功。

    200939402.png

    三、修改表的排序规则

      表的排序规则依赖于数据库的排序规则。不能修改。

    151016158.png

    四、修改列的排序规则

      建议:将这个表的数据保存到另一个临时表,重建这个表,然后从临时表将数据导入到新表。

      可以通过SSMS修改某一列的排序规则,但是,这项操作实际上还是删除这个表以及相关的约束、触发器,然后重建这个表、约束、索引、触发器。

    151916239.png

    151916753.png

    ALTER TABLE dbo.EmpBasic DROP CONSTRAINT DF__EmpBasic__FirstN__2319CD4B
    ALTER TABLE dbo.EmpBasic DROP CONSTRAINT ......

    CREATE TABLE dbo.Tmp_EmpBasic ( ......
    FirstName nvarchar(30) COLLATE Chinese_PRC_CI_AS NULL,
    ...... ) ON [PRIMARY]

    ALTER TABLE dbo.Tmp_EmpBasic SET (LOCK_ESCALATION = TABLE)
    GRANT DELETE ON dbo.Tmp_EmpBasic TO public AS dbo
    GRANT INSERT ON dbo.Tmp_EmpBasic TO public AS dbo
    GRANT SELECT ON dbo.Tmp_EmpBasic TO public AS dbo
    GRANT UPDATE ON dbo.Tmp_EmpBasic TO public AS dbo

    ALTER TABLE dbo.Tmp_EmpBasic ADD CONSTRAINT DF__EmpBasic__FirstN__2319CD4B DEFAULT ('') FOR FirstName
    ALTER TABLE dbo.Tmp_EmpBasic ADD CONSTRAINT DF__EmpBasic__Middle__240DF184 ......

    SET IDENTITY_INSERT dbo.Tmp_EmpBasic ON

    IF EXISTS(SELECT * FROM dbo.EmpBasic)
    EXEC('INSERT INTO dbo.Tmp_EmpBasic (Company, EmpID, FirstName,......)
    SELECT Company, EmpID, FirstName, ...... FROM dbo.EmpBasic WITH (HOLDLOCK

    TABLOCKX)')


    SET IDENTITY_INSERT dbo.Tmp_EmpBasic OFF

    DROP TABLE dbo.EmpBasic
    EXECUTE sp_rename N'dbo.Tmp_EmpBasic', N'EmpBasic', 'OBJECT'

    CREATE UNIQUE CLUSTERED INDEX EmpID ON dbo.EmpBasic
    (Company, EmpID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,

    ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]

    CREATE NONCLUSTERED INDEX FirstName ON dbo.EmpBasic
    ( Company, FirstName, LastName ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,

    ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]

    create trigger _ti_EmpBasic ON dbo.EmpBasic for insert as
    begin
    ......
    end

  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/taoshengyujiu/p/5017270.html
Copyright © 2011-2022 走看看