sp_tablecollations_100是什么作用?

9

在进行批量插入(SqlBulkCopy)之前,我看到了一个

excec sp_tablecollations_100 N'.tb_tablename'

在分析器中

这是做什么用的?这是一个问题的迹象还是正常现象?

谢谢你的帮助

更新

后面的批量插入会显示插入语句中的COLLATION。它运行良好,只是想知道这是否是“正常行为”,或者批量插入中的COLLATE是否会影响性能?

insert bulk tb_dvr_patient ([geboortejaar] VarChar(4) COLLATE Latin1_General_CI_AS,...

有趣。看起来这是一个未记录的存储过程,可能用于准备批量复制操作。"_100"可能指的是SQL Server版本。 - Blorgbeard
选择@@trancount; SET FMTONLY ON select * from [tbl_tablename] SET FMTONLY OFF exec ..sp_tablecollations_100 N'.[tbl_tablename]' -- 这是我看到的完整查询。FMTONLY表示不返回数据,只返回元数据。 发现nvarchar使用2个字节而不是1个字节。sys.columns显示max_length = 44,但实际上只有22个字符。这非常有帮助! - TamusJRoyce
1个回答

6

我自己也很好奇,所以查看了存储过程背后的SQL代码,如下:

ALTER procedure [sys].[sp_tablecollations_100]
(
    @object nvarchar(4000)
)
as
    select
        colid               = s_tcv.colid,
        name                = s_tcv.name,
        tds_collation       = s_tcv.tds_collation_100,
        "collation"         = s_tcv.collation_100
    from
        sys.spt_tablecollations_view s_tcv
    where
        s_tcv.object_id = object_id(@object, 'local')
    order by colid

看起来它只是告诉您该表中列的排序规则。

这有帮助吗?

Rick。


1
好的,这回答了我问题的一部分。你知道这是“标准行为”还是可以避免的吗?我已经检查了源表和目标表的排序规则,它们是相同的。 - Pleun
不幸的是,我不知道它是否可以避免,因为我的SQL知识不是很好,但它听起来像是SQL会执行的验证它们是否相同的操作。希望其他人能够回答你 :) - Richard Adnams
这些信息可能被SSI服务用于匹配源和目标排序集。 - Gerardo Lima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接