代码之家  ›  专栏  ›  技术社区  ›  Gennady Vanin Геннадий Ванин Mikael Svenson

如何编写非默认排序规则的脚本并跳过默认排序规则的显式脚本?

  •  2
  • Gennady Vanin Геннадий Ванин Mikael Svenson  · 技术社区  · 14 年前

    在SSMS 2008 R2中,我创建了一个表:

    aTest(Albnian varchar(10), Dflt varchar(10))
    

    在SSMS表设计器中,这两列都具有排序规则:“<数据库默认值”>(在“列属性”中的“表设计器”)。

    我将“Albnian”列的排序规则更改为非默认值,例如,阿尔巴尼亚语的“Ci_as”。

    如果我在SSMS中编写该表的脚本(右键单击“Atest”脚本表为“Create to”New Query Editor窗口),我得到的[1]完全没有明确的排序脚本。

    坏的。

    显然,我们希望表的脚本中包含非默认排序规则的显式排序规则(开发人员有意为特定目的引入的排序规则),而没有默认排序规则的排序规则。

    在SSMS菜单“工具”“选项”“SQL Server对象资源管理器”“脚本”中,我更改了:

    • 包含排序规则:真
    • 脚本默认值:假

    但现在,我正在编写所有列排序规则的脚本,包括默认和非默认排序规则[2]。

    如何将脚本生成配置为编写非默认排序规则的脚本并跳过默认排序规则,如[3]所示?

    [1]表的默认脚本:

    CREATE TABLE [dbo].[aTest]
    (
        [Albnian] [varchar](10) NOT NULL,
        [Dflt] [varchar](10)  NOT NULL
    ) ON [PRIMARY]
    

    [2]将“include collation”后的表脚本更改为true

    CREATE TABLE [dbo].[aTest]
    (
        [Albnian] [varchar](10) COLLATE Albanian_CI_AS NOT NULL,
        [Dflt] [varchar](10) COLLATE Cyrillic_General_CI_AS NOT NULL 
    ) ON [PRIMARY]
    

    [3]需要排序规则脚本生成行为:

    CREATE TABLE [dbo].[aTest]
    (
        [Albnian] [varchar](10) COLLATE Albanian_CI_AS NOT NULL,
        --non-default should be scripted
    
        [Dflt] [varchar](10) NOT NULL 
        -- default database collation should not be scripted
    ) ON [PRIMARY]
    

    相关问题:

    1 回复  |  直到 14 年前
        1
  •  1
  •   Pang Ajmal PraveeN    8 年前

    我通过MS Connect提交了一个建议:
    Collations are scripted either for all columns or for none

    以下是相关的回答:

    张贴 微软 2010年11月11日上午10:16
    你好,Gennady:

    感谢您写信给微软。我们非常重视您的反馈。我们了解您的问题,以及如何解决这些问题以提高生产力。

    然而,考虑到实施这项工作所涉及的工作,以及我们的一套可交付成果,我们认为,在不久的将来,我们将无法做到这一点。

    尽管如此,我们还是很重视您的建议,并向您保证,当我们将来再次访问此功能时,我们会记住这些想法。

    再次感谢您提供反馈并使SQL Server成为最好的数据库服务器。

    当做

    钱德拉穆利