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

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(使用前将#替换为@)

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

  • 通过 Plesk 面板托管 SQL Server 数据库时出现问题

    首先 我提供有关我的产品订阅的信息 我还订阅了一年的 Plesk Windows 托管 终极 订阅 此外我还订阅了一年的 SiteLock 我正在尝试使用 SQL Server 数据库托管 ASP NET 网站 但我很难做到这一点 首先 我
  • 验证 C# 中的小数是否存储在 SQL Server 中

    我有一个十进制数据库列decimal 26 6 据我所知 这意味着精度为 26 小数位数为 6 我认为这意味着该数字的长度总共可以是 26 位数字 其中小数点后可以有 6 位数字 在我的 WPF C 前端中 我需要验证传入的小数 以便我可以
  • 将每月数据分解为每日数据

    我有一家公司的预算数据 采用以下每月格式 SqlFiddle 链接在这里 http sqlfiddle com 3 09263 1 Dept YearMonth Budget 001 201301 100 001 201302 110 00
  • 如何用NULL替换空格

    我在 sql server 2012 中有一个包含空格的列 我想用 NULL 替换这些空白 我已经编写了以下查询 但它不起作用 SELECT replace COLUMN1 NULL FROM Orders 如何实现上述功能 提前致谢 Us
  • 模拟 SQL Server 实例上的当前日期?

    是否可以更改 SQL Server 上特定数据库的日期时间 它与操作系统的日期 时间相关吗 我们希望模拟未来的日期时间以进行测试 即GETDATE 返回未来的日期 它必须处于半生产 暂存 环境中 因此不幸的是 我们无法选择更改操作系统日期
  • SqlCommand返回值参数

    也许查看此代码的其他人能够告诉我为什么 returnID 始终为 0 我正在尝试从插入的记录中检索新的 ID public int AddToInventory int PartID int QtyOnHand int SpokenFor
  • 如何查找 SQL Server 数据库中所有空间的使用情况

    我们有一个 SQL Server 数据库 根据 Microsoft SQL Server Management Studio 的数据 该数据库只有 6436Mb 中的 119Mb 可用 然而命令 EXEC sp msforeachtable
  • MySQL CREATE TABLE 语句上的外键错误(错误:150)

    我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法 类型匹配 我尝试使用 ENGINE InnoDB 等 但很困惑为什么我收到外键错误 我已经离开 SQL 一段时间了 所以这可能是一个简单的问题 mysql gt CREATE T
  • 循环遍历服务器上的数据库,并更新数据

    我有一台带有多个数据库的服务器 我需要循环访问这些数据库并更改每个数据库中的一个记录 一个表中的值 如何才能做到这一点 EXEC sp MSForEachDB Use UPDATE dbo MyTable SET MyValue 999
  • 使用 SqlBulkCopy 时提供流作为二进制列的数据源

    如果需要读取数据fromSqlServer 采用流式传输方式 有一些功能可以实现这一点 比如使用SqlDataReader with CommandBehavior SequentialAccess 特别是当需要访问二进制列数据时 有Get
  • 如何从 SQL Server 2005 备份中恢复单个表?

    我已经使用常规 SQL Server 2005 备份命令进行了备份 有没有办法只恢复单个表 而不是整个数据库 将整个数据库恢复到另一台机器 或临时数据库 然后复制表对我来说似乎是最简单的
  • 区分大小写变得疯狂

    我有一个数据库 我正在尝试执行以下查询 SELECT COUNT FROM Resource WHERE Name LIKE ChinaApp SELECT COUNT FROM Resource WHERE Name LIKE China
  • 如何在 SQL Server Management Studio 中查看 SSIS 包?

    啊 我通过导入向导创建了 SSIS 包 但使用 Management Studio 在服务器上找不到 SSIS 包 当我进入作业调度程序时 执行 SSIS 包也没有显示为选项 当您启动 SSMS 时 它允许您选择服务器类型和服务器名称 在服
  • 为什么 Excel 有时会在工作表名称中添加 $?

    我有时但并非总是发现 Excel 会放置一个 位于工作表名称末尾 但在 Excel 中看不到 只有在尝试使用 C 将其导入 SQL Server 时才可见 我遇到过很多不同的情况 它保留了原始工作表 但也创建了第二个空的 隐藏 工作表 其中
  • SQL Server 2005 - 达到表行大小限制

    有没有一种干净的方法可以在向表添加新列之前确定表的行大小 并且不超过 8060 字节的限制 例如 如果表行长度当前为 8055 字节 并且我想添加日期时间 8 字节 则这将结束 因为它将变为 8063 字节 不包括空映射 但是 如果我添加一
  • SQL 删除自动命名约束

    我使用脚本在表上创建了一些约束 但未指定约束名称 结果 我最终受到了像这样的限制FK DOC OBGS kntr 54E63309例如 是否可以在不指定确切的约束名称的情况下删除该约束 例如 类似这样的东西 不起作用 ALTER TABLE
  • T-Sql如何从另一个存储过程中的存储过程返回表

    我想做以下事情 基本上有一个存储过程调用另一个返回表的存储过程 这是怎么做到的 ALTER PROC GETSomeStuff AS BEGIN table exec CB GetLedgerView accountId fromDate
  • 使用 SQL Server 作为具有多个客户端的数据库队列

    给定一个充当队列的表 如何最好地配置表 查询 以便多个客户端同时处理队列 例如 下表指示了工作人员必须处理的命令 当worker完成后 它会将处理后的值设置为true ID COMMAND PROCESSED 1 true 2 false
  • C# 事务中的事务

    我正在使用 C 将发票的平面文件导入到数据库中 如果遇到问题 我将使用 TransactionScope 回滚整个操作 这是一个棘手的输入文件 因为一行不一定等于一条记录 它还包括链接记录 发票将包含标题行 行项目和总计行 有些发票需要跳过
  • 如何跟踪数据库连接泄漏

    我们有一个应用程序似乎存在连接泄漏 SQL Server 表示已达到最大池大小 我独自一人在我的开发机器上 显然 只需导航应用程序 我就会触发此错误 SQL Server 活动监视器显示大量正在使用我的数据库的进程 我想查找哪些文件打开连接

随机推荐