【问题标题】:Can in-memory tables be added to a database diagram内存表可以添加到数据库图中吗
【发布时间】:2019-12-16 21:43:04
【问题描述】:

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

运行 SSMS 18.3.1。当我开始一个新图表时,内存表没有显示在下拉列表中。还有其他方法可以让它们出现在图表上吗?

注意:在官方文档中,这些被称为内存优化表。见Introduction to Memory-Optimized Tables

【问题讨论】:

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

标签: sql-server database sql-server-2016 diagram


【解决方案1】:

您不能在数据库图中添加 OLTP 对象,甚至在 SQL Server 2019 中也不能。

我认为应该有一种方法可以修改 [dbo].[sysdiagrams] 中的 [definition] 列,但它是未知文件类型的 HexString。 (我尝试了很多格式,但它显然是微软内部的类型)

很遗憾,没有提及该功能不受支持。 (我发评论到this page

【讨论】:

  • 我希望您的评论被接受(OTOH,您可以分支来源,添加评论并发送 PR。它可能会得到更多关注。但不确定。
【解决方案2】:

数据库图表不支持 OLTP。您无权访问图中的内存表,因为该图没有将内存表的本质识别为表,实际上 SQL Server 会为每个创建的内存生成一个 DLL-包含所需功能的优化表类型 用于访问索引并从相关的内存优化表变量中检索数据

【讨论】:

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

如果您运行 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

【讨论】:

  • 是的,它似乎不起作用,这是真的。只是在寻找这样的官方声明。
猜你喜欢
  • 2012-05-18
  • 2020-05-22
  • 1970-01-01
  • 2016-06-18
  • 2016-03-25
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多