Sql server 从dacpac获取计算列的数据类型

Sql server 从dacpac获取计算列的数据类型,sql-server,sql-server-data-tools,calculated-columns,dacpac,dac,Sql Server,Sql Server Data Tools,Calculated Columns,Dacpac,Dac,通过C#代码遍历Dacpac时,我能够确定计算列中引用了哪些列(GetReferenced(Microsoft.SqlServer.Dac.Model.column.ExpressionDependencies)),以及列的表达式是什么(Microsoft.SqlServer.Dac.Model.column.expression属性)。我找不到的是计算列的数据类型 除此之外,我也找不到检索FileTable表的列的方法(尽管这是一组静态列) 搜索引擎不会带我走多远;在这个主题上没有太多的资源。

通过C#代码遍历
Dacpac
时,我能够确定计算列中引用了哪些列(
GetReferenced(Microsoft.SqlServer.Dac.Model.column.ExpressionDependencies)
),以及列的表达式是什么(
Microsoft.SqlServer.Dac.Model.column.expression
属性)。我找不到的是计算列的数据类型

除此之外,我也找不到检索
FileTable
表的列的方法(尽管这是一组静态列)


搜索引擎不会带我走多远;在这个主题上没有太多的资源。

我在这里写了一篇关于如何获取列的数据类型的博客:

我还没有在计算列上尝试过

要获取文件表的列,请按照日志操作,但将table.columns ModelRelationshipClass替换为FileTable.columns ModelRelationshipClass


Ed

嗨,Ed,我已经找到了你的博客,发现它对我的第一步非常有用。然而,你的博客并没有回答这个问题。此外,如果我使用您的工具“dacpac资源管理器”,则无法获取计算列的类型。它正确显示表达式,但对于类型,它指向引用的列。引用的列数据类型并不总是等于计算列的数据类型。感谢提供有关FileTable的提示,意外使用了Table而不是FileTable。很酷,sql中似乎不存在计算列的数据类型-如果查看model.xml,则没有类型说明符。我不确定这是否是DacFx api的一个bug,但如果您在ssms中找到一个表并将其脚本化,那么sql在运行时编译它时必须对其进行评估。@EdElliott-Ed,很抱歉提出这样的请求,但由于您是SSDT和Dac api的专家,你知道这个问题的解决方案吗?没问题,但每个人都必须睡觉:)就像Steven说的那样,使用dac扩展可以使使用dacfx探索dacpac变得更加简单-这个答案来自于之前的答案,因此我将更新它以包含详细信息