我很难找到将存储过程直接打开到management的解决方案,以便从我的SQLQuery应用程序(winform)修改一个新的C#。
这是我的代码:
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中进行修改?
发布于 2018-03-28 12:20:03
我找到了一种方法,可以将存储过程脚本直接打开到management,以便从我的SQLQuery应用程序(winform)修改一个新的C#。
EXEC sp_helptext 'procedure_name'编写这个过程的脚本System.Diagnostics;打开下面是使用代码片段的步骤:
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();
} 第四步。
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();
} 发布于 2018-03-22 15:37:34
恐怕这不可能。如果从命令行运行ssms -?,则可以看到可以传入的所有参数:

一些备选方案:
procedure.sql文件中,并让SSMS打开该过程。不要忘记传递服务器、数据库和凭据。https://stackoverflow.com/questions/49431414
复制相似问题