通过c#ASP.Net中的网页运行TSQLScripts
我正在尝试构建可用于在线运行TSQL脚本的网页 我的数据库有很多数据库,我使用系统管理员帐户来执行这些脚本 在建立网页之后通过c#ASP.Net中的网页运行TSQLScripts,c#,tsql,sql-server-2008-r2,C#,Tsql,Sql Server 2008 R2,我正在尝试构建可用于在线运行TSQL脚本的网页 我的数据库有很多数据库,我使用系统管理员帐户来执行这些脚本 在建立网页之后 我可以在所有数据库中成功运行简单的CRUD语句 我只能为默认连接的数据库(MyDB1)运行DML语句 无论何时创建新对象,它都位于MyDB1中。但是我想在另一个数据库中运行/创建对象 我试着运行下面的命令,它非常简单,在SSMS中工作得非常好 USE MyDB2 GO CREATE PROCEDURE [dbo].MyProc AS BEGIN INSERT I
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中运行它?
USE
是一个SSMS命令,而不是SQL语句
更改连接字符串以指定适当的数据库。与实现无关。请确保您没有将此网页公开给外部世界。整个项目读起来就像是IT安全专业人士的讣告。顺便说一句,
GO
。