【发布时间】:2014-01-19 22:55:12
【问题描述】:
我希望能够在没有requiring the NAV Development Environment 的情况下直接从 SQL Server 数据库中读取Dynamics NAV 2013 Table Metadata。
我可以使用如下查询查看二进制 SQL“图像”BLOB 列(使用 WHERE 子句进行适当过滤):
SELECT
o.[Name],
m.[Object Type],
m.[Metadata], -- XML Metadata
m.[User Code], -- C# Metadata
m.[User AL Code] -- C/AL Metadata
FROM [Navision].[dbo].[Object Metadata] AS m
JOIN [Navision].[dbo].[Object] AS o
ON m.[Object ID] = o.[ID]
AND o.[Company Name] = 'YourCompanyName'
AND o.[Type] = 0 -- 0 is NAV Table Object Type
我可以使用 .Net 代码或带有 SQL 驱动程序的快速脚本将 [元数据]、[用户代码] 和 [用户 AL 代码] 中的二进制数据保存到文件中。我尝试使用 7-zip 解压缩,使用十六进制编辑器查看,以及 Cygwin “文件”命令来检测这些 BLOB 文件类型。
不幸的是,我不知道如何将二进制数据解码或解压缩为可读或可用的格式。在我可以直接使用这些字段中的数据之前,我必须 open NAV Dev Environment and use the Object Designer to view the comma-separated OptionString properties 用于从零开始的查找列表下拉菜单(列表中的每个项目都以整数形式存储在后端数据库中 - 第一项为 0,1第二个等)。 SQL 查找表中不存在字符串值,但 NAV 确实将它们放在表元数据 blob 中。
这是我完全支持我的 NAV 用户作为 DBA 而不需要 NAV 开发人员为我查找这些数字到名称的 NAV 自定义字段映射的缺失链接。然后,我可以查找这些列表值并根据需要创建匹配的 SQL CASE 语句或自定义查找表。
一旦我有了这篇文章,我应该能够创建高级 SQL 视图、查询、报告和工具,而无需访问 Dynamics NAV 前端用户或开发人员工具。
如果您了解用于这些 NAV 对象元数据 blob 属性的二进制数据格式,请告诉我。任何有关如何转换为可读或可用格式的建议都会有所帮助。
【问题讨论】:
标签: tsql blob zlib dynamics-nav deflatestream