【问题标题】:Is there a way to run Visual FoxPro code from a SQL Server CLR or CMD?有没有办法从 SQL Server CLR 或 CMD 运行 Visual FoxPro 代码?
【发布时间】:2020-10-30 17:27:24
【问题描述】:

为这个奇怪的问题道歉。

长话短说,我们有一个 Visual FoxPro .prg,它将使用 SQLEXEC() 执行查询,然后使用 AFIELDS() 获取字段名称、字段类型、字段宽度(长度)和小数位数要存储到 SQL 表中的结果集列(即使是从临时表或动态 SQL 中选择的)。

我希望它能够从 SQL Server CLR 运行此 .prg,甚至无需手动打开 Visual FoxPro 应用程序即可使用 xp_cmdshell。

我已经尝试单独在 CLR 中重新创建此功能,但在将其用作 CLR 存储过程时,嵌套的 INSERT INTO 语句一直遇到问题。

此外,我尝试创建为 CLR SQL 函数,但它会尝试执行我们的自定义挂钩并抛出 “过程不存在” 错误,即使被 IF Object_ID() IS NOT NULL 包围.

另外,由于某些查询可能是临时表的结果,我无法使用OPENQUERYOPENROWSET

这里的最终目标是完全摆脱我们的 Visual FoxPro 客户端,但是获取任何扔给它的任何内容的列元数据的能力阻碍了我们。

【问题讨论】:

  • 我认为您收到了Procedure does not exist,因为您没有指定schema
  • 编辑您的答案并向我们展示您正在运行的代码,然后我们将能够提供更好的建议 - 还包括示例数据和预期结果

标签: sql-server tsql clr visual-foxpro


【解决方案1】:

(真的不是答案,写在这里就像在评论中那样会一团糟) 如果我理解正确的话,有问题的表是一个 VFP 表并且有一些存储过程函数(可能用于插入\更新\删除触发器,或验证检查)。

如果是这样的话,恐怕你倒霉了。您最好的选择可能是在两者之间使用 VFP COM 对象或使用 SetResultSet() 的 VFP SP - 如果存在不受支持的 VFP 命令,则可能会失败。

另一方面,您说它以 SqlExec() 开头,那么它可能不是 VFP 表。然后很可能您可以创建一个 CLR 函数。您能否分享更多详细信息以及 VFP 和 C# 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多