【问题标题】:Query to change table collation in SQL Server 2008查询以更改 SQL Server 2008 中的表排序规则
【发布时间】:2014-03-02 19:46:56
【问题描述】:

在我的数据库中,一个表排序规则不同于所有其他表。

我想将该表排序规则更改为与所有其他表相同。

现在,我可以使用 SSMS 设计更改表排序规则,但我想使用查询来更改排序规则。目前,我的一张表排序规则是Thai_CI_AS,我想更改排序规则是SQL_Latin1_General_CP1_CI_AS。

无法删除该表,因为它已经包含数据。

【问题讨论】:

    标签: sql-server sql-server-2008 collation


    【解决方案1】:

    consult the documentation 绝不是一个坏主意。猜测源数据类型和可空性;您可以填写表格/列名:

    ALTER TABLE dbo.TableName ALTER COLUMN ColumnName
      NVARCHAR(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL;
    

    如果您无法查看文档,Management Studio有时会向您展示做某事的聪明方法(尽管它并不总是选择以最好的方式做事)。进入设计屏幕,更改排序规则,而不是单击 OK,而是单击 Script 按钮。

    【讨论】:

      【解决方案2】:

      这是一个有效的解决方案,我在其中一个 jira 数据库表上应用并测试了重置排序规则。

      -- 正确更改列排序规则 ALTER TABLE [schemaName].[TableName] ALTER COLUMN [columnName] [varchar](255) COLLATE SQL_Latin1_General_CP437_CI_AI NOT NULL;

      --检查指定表的字符串列排序规则 --列出所有具有相应排序规则的字符串列 SELECT c.name, c.collation_name FROM SYS.COLUMNS c JOIN SYS.TABLES t ON t.object_id = c.object_id WHERE t.name = 'TableName' and c.collation_name is not null

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-05
        • 2010-11-10
        • 1970-01-01
        • 2011-11-14
        • 2011-03-28
        • 2016-11-17
        • 1970-01-01
        • 2011-11-17
        相关资源
        最近更新 更多