如何创建SP,表,函数和触发器

时间:2013-03-12 04:01:37

标签: c# .net sql sql-server tsql

我正在开发应用程序,其中一个要求是能够从ASP.NET内部创建SP,表,函数,触发器等。我正在使用的语言是C#,但我不知道这是否可能。你介意指点我正确的方向还是给我一些代码示例?

我尝试在线查看,但我无法找到有关此信息的任何信息。

@ rmayer06,我按照你的建议,下面是我的代码:

protected void createproc_Click(object sender, EventArgs e)
{
    string sqlscript = File.ReadAllText(Server.MapPath("~/sp_create.sql"));

    try
    {
        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand(sqlscript, con);
        cmd.CommandType = CommandType.Text;
        con.ConnectionString = ConfigurationManager.ConnectionStrings["TCKT"].ConnectionString;

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    catch (Exception ex)
    {
        throw new Exception("An error has occurred" + ex);
    }
}

1 个答案:

答案 0 :(得分:2)

可以使用SqlCommand.ExecuteNonQuery()或使用Microsoft.SqlServer命名空间中的类。我在快速搜索中找到了这个:http://forums.asp.net/t/1703608.aspx/1

但是,如果我是你,我会要求你进一步澄清你的要求。你需要动态创建SP似乎很奇怪;通常,如果需要,最好将它们设计为数据库的一部分,因为SP需要进行优化,调试等。

在相关的说明中,我已经从c#中运行了数据库更新脚本,它确实创建了存储过程作为更新数据库代码的一部分。如果您正在做的事情,我建议如下:

  1. 将整个数据库编写为单个.SQL文件。
  2. 使用sqlcmd实用程序对本地服务器执行该文件。这可以通过从Web应用程序调用{​​{1}}并提供必要的命令行参数来完成。
  3. 作为警告,您的Web应用程序进程需要具有启动sqlcmd进程的权限。或者作为替代方法,您可以使用System.Diagnostics.Process.Start()类,只需将SQL脚本的全部内容转储到字符串中,然后传递给命令。我想我也是这样做的,而且很有效。