如何从SSMS脚本调用C#app / .exe以在本地运行,而不是在服务器上运行?

问题描述 投票:1回答:2

我想从数据库中绘制各种列。

似乎没有从SQL Server Management Studio(SSMS)执行此操作的简单方法,所以我创建了一个小型C#应用程序,该应用程序具有表名和列名并进行绘制。

我想在.sql文件中从SSMS调用,类似于:

EXEC "C:\\MyPlotApp.exe [dbo].[Table] ColA"

我发现xp_cmdshell但此似乎要在服务器上执行,我想在本地执行。

我可以创建一个指向我的App.exe的外部工具(即使无法直接从SQL脚本执行)。作为参数,我列出了传递给我的字符串的$(CurText)。唯一的问题是没有参数选项可以从“结果”窗口中传递表名和光标列位置。

c# sql-server tsql ssms external
2个回答
1
投票

SSMS支持SQLCMD模式(查询-> SQLCMD模式)。这使您可以在SSMS查询窗口中使用SQLCMD commands,包括!::命令来同步启动客户端上的外部程序。例如:

:!! C:\MyPlotApp.exe "[dbo].[Table]" "ColA"

0
投票

据我所知,没有简单的方法可以将“结果”选项卡的值传递给外部工具。目前,我只能想到三个选项:

  1. 设置外部工具C#应用程序以从剪贴板读取。然后,在“结果网格”中,选择该列并单击Control-C(这会将所有值复制到剪贴板)。然后,启动您的外部应用程序,该应用程序将从剪贴板中读取该值列表并进行绘制。不确定要使用多少行,但是如果成千上万/百万,这将是一个问题。我想这取决于您的工作站有多少可用RAM。技术上,您实际上并不需要SSMS来执行查询,而是可以将结果传递给另一个应用。您的C#应用​​程序可以执行查询并直接读取结果行。
  2. 如果要实际访问“结果”网格值,则需要编写自己的SSMS扩展名。搜索有关创建自己的扩展程序的搜索,因为那里没有教程。
© www.soinside.com 2019 - 2024. All rights reserved.