问题标签 [scriptdom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 如何使用 scriptdom API 提取跨数据库引用
微软已经公开了用于解析和生成 TSQL的scriptdom
API 。我是新手,还在玩它。我想知道如何从像这样的查询中获取跨数据库引用。
我想要的是参考列表:
但是,对于最后一个条目database2.dbo.table4.id = database2.dbo.table2.t4_id
,两端的两列都来自同一个数据库database2
,这不是我想要的。所以我最终需要的结果是:
是否有可能实现scriptdom
?
c# - 如何从过程中获取 SelectStatement?
这是here的后续问题。我正在尝试使用DACExtensions从 a中检索SelectStatement
对象,Procedure
以便我可以使用 T4 模板从我的 SSDT 项目中生成包装函数。问题是我的 Visitor 对象的 Nodes 属性中没有任何节点。我错过了什么?
这是我的访客:
这是我尝试使用它的方式:
c# - 获取 FunctionCall 的数据类型,例如 scope_identity()
如果我有一个 的实例Microsoft.SqlServer.TransactSql.ScriptDom.FunctionCall
,如何获取函数将返回的值的数据类型?
c# - 如何检测 SELECT 中的列是否可以为空?
我在设计时使用 DacFx 创建从 SSDT 数据库项目中的 sql 文件生成的 C# 数据层。请参阅我在 Github 上的 SqlSharpener 项目,了解我在说什么。
我正在生成代表从存储过程的 SELECT 语句返回的行的 DTO 对象。为了确定 DTO 上的属性是否应该是可为空的值类型,我正在检查该列在它来自的表中是否可以为空。如果您对它的外观感到好奇,这里是代码。(这里的 tSqlObject 是TSqlObject
存储过程的一个实例)
问题是我没有考虑左外连接或右外连接,这也可能使值为空。
如何确定 SELECT 语句中的列是否可以为空?或者,如果这个问题太宽泛,我如何确定该列是否来自一个左外连接的表?
c# - “as”关键字在 TSql100Parser 代码中被认为是令人困惑的
假设我要解析sql语句
并以编程方式确定它排序的列和方向。经过一番谷歌搜索,这就是我想出的:
这段代码工作正常,但我觉得它很混乱。在我看来,“as”关键字有两个地方很奇怪。
其中第一个在第 6 行。TsqlScript 是 TSqlFragment 的子类,所以我想我很幸运能够将它转换为子类。但是第 3 行 Parse 方法的返回类型 TSqlFragment 没有任何有用的属性,只有它的子类有有用的属性。那么,什么样的 API 会公开一个只有在您碰巧知道将其转换为其他东西时才有用的类?
“as”的第二个也是更容易混淆的用法,用在内部 foreach 中。我怎么可能将 ExpressionWithSortOrders 变成 ColumnReferenceExpressions?它们是类,而不是接口,并且它们不会相互继承。据我所知,它们之间既没有显式转换也没有隐式转换。
更一般地说,如何学习使用这样的 API?我在官方 scriptdom 文档中没有找到任何关于这个演员的信息。Visual Studio 没有告诉我可以将这些类相互转换。
c# - Create a visitor for generic statement in TransactSql.ScriptDom
With TransactSql.ScriptDom, it is possible to view object model of an SQL statement by extending the TSqlFragmentVisitor class. For each statement type, there is a separate Visit method which can be overridden. But I want to put exactly the same code into each Visit, of each type. I need something like a generic Visit, for all kinds of Statements. How can I do that?
sql-server - 从数百个存储过程中解析出完整的动态 SQL 表达式
我继承了一个具有数百个存储过程的大型应用程序,其中许多使用动态 SQL。为了更好地处理我正在处理的 SQL 类型,如果我有办法解析所有这些存储过程的查询文本并提取其中包含的任何动态 SQL 的完整表达式,那将非常有用。
一个简化的表达式可能是:
我正在寻找上述输出(最终将在解析所有存储过程的单个查询中调用)是:
因此,不是传入参数值之后的表达式,而是存储过程文本中的表达式文本,包括参数名称。
我可以接受动态 SQL 参数名称为 的完全不安全的假设@query
,因此在 SQL 表达式中搜索它以用作提取文本的起始位置是可以容忍的,但因为有单引号内联,我没有简单的方法知道对变量的赋值在哪里完成。
我在这个问题中包含了 [antlr] 和 [parsing] 标签,因为我觉得这超出了 T-SQL 的能力。
PS:是的,我很清楚“我不应该这样做”。
编辑
根据下面的建议,尝试了以下查询,但在这种情况下并不是很有用:
c# - vs 2013 中缺少 Microsoft.Data.Schema.ScriptDom.Sql dll/命名空间
有没有办法让命名空间Microsoft.Data.Schema.ScriptDom.Sql添加到vs 2013,我搜索发现早期的Microsoft.Data.Schema.ScriptDom已经被TransactSql.ScriptDom取代但我找不到包含 Microsoft.Data.Schema.ScriptDom.Sql 的方式。此外,仅添加 TransactSql.ScriptDom 并不能完成这项工作,我还需要 Expression 类和 BinaryExpressionType.GreaterThan、BinaryExpressionType.Equals 运算符,而仅使用 TransactSql.ScriptDom 是无法获得的。任何人都可以建议如何获得这些,或者在哪里可以找到 sql dll
sql-server - 由于缺少依赖项,SQL 提供程序无法运行。请确保已安装 Microsoft SQL Server Transact-SQL ScriptDom
Web 部署任务失败。(由于缺少依赖项,SQL 提供程序无法运行。请确保已安装 Microsoft SQL Server Transact-SQL ScriptDom。
在启用更新数据库的 Visual Studio 中发布任何 Web 应用程序时出现此错误。在我将 SQL SERVER MANAGEMENT Studio 升级到 2016 之前它工作正常。
我尝试卸载并重新安装 sql server 和所有必需的组件但徒劳无功
任何建议将不胜感激
谢谢