我正在使用 SQL Server 2012 的Filetable来存储文档并使用Semantic Search搜索它们。
我想知道是否有办法列出所有文档属性(元数据)。有一种方法可以让全文搜索索引和搜索文档属性。我可以使用以下语句制作 SQL Server 索引的属性列表:
SELECT * FROM sys.registered_search_properties;
Run Code Online (Sandbox Code Playgroud)
我还可以使用 SQL 或使用程序扩展此列表。
我没有找到一种列出实际信息的方法。我正在寻找的是一个列表,如:
任何人都可以指出我正确的方向吗?
编辑:Bob Beauchemin 创建了一张描述我的问题的票。由于 DMV 未列出属性值,因此我无法在我的项目中使用它。
我最终使用 C# 列出带有OleDocumentProperties对象的自定义属性。此对象可以从 Office 文档中读取属性。我会继续关注这个问题,希望有更好的解决方案。
我工作的公司有几个 SQL Server 数据库,其中的表包含 +- 500.000.000 行。我们正在运行 SQL Server 2008R2 和 2014 的企业版。
大数据类型
当我查看最大表中使用的数据类型时,我看到很多 BIGINT 列。使用Thomas Larock的脚本检查这些列中的数据并自己编写 MIN() 和 MAX() 值的脚本,我得出结论,这些 BIGINT 列中的数据可以很容易地装入 INT 甚至 SMALLINT/TINYINT 列中。(我知道有些列将来可能需要 BIGINT 的范围,所以我不会在没有先与开发人员交谈的情况下盲目更改所有数据类型)
在比较更改数据类型时可能的节省时,表似乎可能是当前大小的一半(甚至不考虑索引和其他表)。这些数字没有任何数据压缩。
行压缩
在大表上启用了 ROW 压缩。我想知道“缩小”列数据类型的实际影响可能是什么,请记住 ROW 压缩仅使用所需的字节。例如,如果一个值可以存储在 1 个字节中,则存储将只占用 1 个字节。
实际问题
是否有助于缩小数据类型,以便 ROW 压缩使用更少的资源?或者说“因为启用了 ROW 压缩,BIGINT、INT 或 SMALLINT 数据类型之间没有区别”是否可以保存?
我正在尝试使用停用词,以便全文索引器跳过某些单词。我可以在表sys.fulltext_stopwords 中添加这些停用词。
尝试在 SQL Server 2012 中获取停用词和系统停用词列表时遇到错误。我正在执行以下(简化的)查询:
SELECT sys.fulltext_stopwords.stopword
FROM sys.fulltext_stopwords
UNION
SELECT sys.fulltext_system_stopwords.stopword
FROM sys.fulltext_system_stopwords;
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是:
“无法解决 UNION 操作中“Latin1_General_CI_AS”和“Latin1_General_BIN”之间的排序规则冲突。”
我的查询中第一个 SELECT 语句的数据库排序规则是Latin1_General_CI_AS。master、model、msdb和tempdb数据库也是如此。
在什么地方Latin1_General_BIN 整理从何而来?看起来 sys.fulltext_system_stopwords 表有不同的排序规则,但为什么呢?
编辑:
我可以通过在查询中使用COLLATE来“解决”我的错误,如下所示:
SELECT sys.fulltext_stopwords.stopword COLLATE DATABASE_DEFAULT
FROM sys.fulltext_stopwords
UNION
SELECT sys.fulltext_system_stopwords.stopword COLLATE DATABASE_DEFAULT
FROM sys.fulltext_system_stopwords
Run Code Online (Sandbox Code Playgroud)
我看到系统停用词存储在资源数据库中,可以解释整理的差异。下一个问题是:为什么资源数据库中的排序规则与默认排序规则不同?