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

2024-04-25

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

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

在 SSMS 表设计器中,两列都有排序规则:“”(在“列属性”→“表设计器”下)

我将“Albnian”列的排序规则更改为非默认排序规则,例如 Albanian_CI_AS。

如果我在 SSMS 中编写表脚本(右键单击“aTest”→“将表脚本编写为”→“创建到”→“新查询编辑器窗口”,我会得到 [1],根本没有编写显式排序规则。

Bad.

显然,人们希望该表的脚本中使用显式排序规则来实现非默认排序规则(开发人员出于特定目的而有意引入的排序规则),并且不使用默认排序规则来编写脚本。

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

  • 包含排序规则:True
  • 脚本默认值:False

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

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

[1] 表的默认脚本:

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

[2]“包含排序规则”更改为 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]

相关问题:

  • 开发和生产 SQL Server 之间使用不同的排序规则会出现哪些问题? https://stackoverflow.com/questions/4020870/what-issues-to-anticipate-having-different-collations-between-development-and-pro

我通过 MS Connect 提交了建议:
排序规则要么为所有列编写脚本,要么不为任何列编写 https://connect.microsoft.com/SQLServer/feedback/details/617116/collations-are-scripted-either-for-all-columns-or-for-none

以下是相关回应:

发表者微软于 2010 年 11 月 11 日上午 10:16
嗨根纳迪:

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

然而,考虑到实施这项工作所需的工作以及我们的一系列可交付成果,我们认为我们无法在不久的将来实现这一目标。

话虽如此,我们重视您的建议,并向您保证,当我们将来重新访问此功能时,我们会牢记这些想法。

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

Regards

钱德拉穆利

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐