通过c# ASP.Net的Web页面运行TSQLScripts

本文关键字:运行 TSQLScripts Web ASP Net 通过 | 更新日期: 2023-09-27 18:11:33

我正在尝试构建可用于在线运行TSQL脚本的网页。

我的数据库有这么多数据库,我使用系统管理员帐户来执行这些脚本。

建立网页后,

    我可以在所有数据库中成功运行简单的CRUD语句
  1. 我只能对默认连接的数据库MyDB1运行DML语句。
  2. 每当我创建新对象时,它都位于MyDB1中。但是我想在另一个DB中运行/创建对象。

我试着运行下面的命令,这是非常简单的,它在SSMS中完美地工作。

USE MyDB2
GO
CREATE PROCEDURE [dbo].MyProc
AS
BEGIN
    INSERT INTO
        dbo.Table1
        (
        FieldA
        , FieldB
        , FieldC
        )
    VALUES
        (
        'AAA'
        , 'BBB'
        , 'CCC'
        )
END

但是我得到错误信息:

'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.

我的c#代码执行张贴的脚本在这里:

DataTable dt = new DataTable();
            try
            {
                using (SqlConnection cn = new SqlConnection("MyConnString"))
                {
                    cn.Open();
                    SqlCommand cmd = new SqlCommand(sql, cn);
                    using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        if (dr.HasRows)
                        {
                            dt.Load(dr);
                        }
                        dr.Close();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                //Log Error
            }

如果我删除,USE语句,它是可以的,但是它在默认的数据库MyDB1中创建了对象。如何调整代码以在MyDB2中运行它?

通过c# ASP.Net的Web页面运行TSQLScripts

USE是SSMS命令,不是SQL语句。

更改连接字符串以指定适当的数据库