首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#应用程序打开MSQL过程(使用System.Diagnostics)

从C#应用程序打开MSQL过程(使用System.Diagnostics)
EN

Stack Overflow用户
提问于 2018-03-22 14:37:16
回答 2查看 172关注 0票数 2

我很难找到将存储过程直接打开到management的解决方案,以便从我的SQLQuery应用程序(winform)修改一个新的C#

这是我的代码:

代码语言:javascript
复制
Process openSQL = new Process();
openSQL.StartInfo.FileName = "Ssms.exe";
openSQL.StartInfo.Arguments = "dbo.getResults"; //name of the stored procedure I want to open 
openSQL.Start();

在执行代码后,我收到了错误:“在命令行上指定了以下文件: dbo.getResults无法找到这些文件,也不会加载这些文件。”

如何“指向”C#中的存储过程并显示其定义并准备在management中进行修改?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 12:20:03

我找到了一种方法,可以将存储过程脚本直接打开到management,以便从我的SQLQuery应用程序(winform)修改一个新的C#。

  1. 我要用EXEC sp_helptext 'procedure_name'编写这个过程的脚本
  2. 结果集被填充在一个DataSet中。
  3. 而DataSet正在被写入一个空的.sql文件中。
  4. .sql文件将在Managment中使用System.Diagnostics;打开

下面是使用代码片段的步骤:

代码语言:javascript
复制
 private void saveProcToAFile()
 {
     StreamWriter log;

     if (!File.Exists("procedureToBeLoaded.sql"))
     {
         log = new StreamWriter("procedureToBeLoaded.sql");
     }
     else
     {        
         log = new StreamWriter(File.Create("procedureToBeLoaded.sql"));
     }           

     SqlConnection conn = new SqlConnection(conString);
     SqlDataAdapter da = new SqlDataAdapter();
     SqlCommand cmd = conn.CreateCommand();
     cmd.CommandText = string.Format("EXEC sp_helptext '{0}'", "procedure_name"); //Step 1.
     da.SelectCommand = cmd;
     DataSet ds = new DataSet();

     conn.Open();
     da.Fill(ds); //Step 2.
     conn.Close();

     foreach (DataRow dr in ds.Tables[0].Rows)
     {
         log.WriteLine(dr[0]); //Step 3.
     }

     log.Close();          
  }   

第四步。

代码语言:javascript
复制
private void contextMenuStripOpenInSqlStudio_Click(object sender, EventArgs e)
{
    saveProcToAFile();
    Process openSQL = new Process();
    openSQL.StartInfo.FileName = "Ssms.exe";
    openSQL.StartInfo.Arguments = "procedureToBeLoaded.sql";
    openSQL.Start();
} 
票数 0
EN

Stack Overflow用户

发布于 2018-03-22 15:37:34

恐怕这不可能。如果从命令行运行ssms -?,则可以看到可以传入的所有参数:

一些备选方案:

  1. 让用户自己编辑过程。毕竟,任何能够这样做的人都会理解如何正确地使用SSMS。
  2. 创建你自己的UI。您可以读取存储过程的内容并将其显示在文本框中。缺点是您失去了语法突出显示等功能(除非您也在其中构建)。
  3. 您可以下载该过程并将其存储在procedure.sql文件中,并让SSMS打开该过程。不要忘记传递服务器、数据库和凭据。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49431414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档