内存表可以添加到数据库图中吗?

7

我有一个带有内存表的SQL Server 2016数据库,想使用数据库图表功能创建相应的图形。

运行SSMS 18.3.1. 当我启动新的图表时,内存表在下拉菜单中不显示。是否还有其他方法将它们添加到图表中?

注意:在官方文档中,这些被称为内存优化表。请参见介绍内存优化表


1
在我看来,“内存表”真正存在的目的只有一个:使存储过程能够返回多行。它们是非常特殊用途的构造。我真的无法想象它们成为“图表”的一部分。而且我也无法想象你的数据库如何使用它们... - Mike Robinson
1
我指的是内存优化表,通常称为内存表。我们按照官方文档中所述的方式使用它们。我在顶部帖子中添加了一个链接。 - user1443098
您可以在SSMS中打开“输出窗口”。快捷键为“Ctrl+Alt+O”。然后访问图表功能,您应该能够拦截发送以检索元数据的查询。我敢打赌它是以一种排除内存表的方式构建的。 - Lukasz Szozda
1
@LukaszSzozda 有趣的想法。然而,我在输出窗口中根本没有看到任何与图表相关的查询。 - user1443098
3个回答

3

在数据库图中,甚至在SQL Server 2019中,您无法添加OLTP对象。

我原以为可以修改[dbo].[sysdiagrams]中的[definition]列,但它实际上是未知文件类型的HexString。(我尝试了许多格式但很明显这是一个Microsoft内部类型)

不幸的是,没有提及这是不支持的功能的参考。(我已向此页面发送了评论)


希望您的评论被接受(或者您可以分支源代码,添加评论并发送PR。这可能会引起更多关注,但不确定。) - user1443098

3

数据库图表不支持 OLTP。您无法在图表中访问内存优化表,因为图表无法将内存优化表的本质视为表,实际上SQL Server会为每个创建的内存优化表类型生成一个DLL,其中包括访问索引和从相关的内存优化表变量检索数据所需的函数。


是的,我知道SQL Server如何为这些构建DLL,只是在寻找一个明确的来源,说明mem-opt表在图表中不可用。你有这样的来源吗? - user1443098

0

如果您运行SQL Profiler工具,您将看到在返回的表数据结果集中有一个名为IsMemoryOptimized的列,该列用于内存优化表。我认为由于数据库图表功能较旧(自mssql 2000以来),并且没有定期更新,因此不支持查看较新的内存优化表。

更多信息请参见: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/71aa7b6e-c281-4417-8149-2eb6f3830110/sql-server-2016-memory-optimized-tables-not-visible-in-database-diagrams?forum=sqlinmemory


是的,看起来它似乎不起作用,这是真的。只是在寻找一个官方声明来证实这一点。 - user1443098

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