Запуск TSQLScripts через веб-страницу в С# ASP.Net

77
8

Я пытаюсь создать веб-страницу, которая может использоваться для запуска скриптов TSQL в Интернете.

Моя БД имеет так много баз данных, и я использую учетную запись системного администратора для выполнения этих сценариев.

После создания веб-страницы,

Я могу запускать простые заявления CRUD во всех базах данных Я могу запускать операторы DML только для подключенной по умолчанию базы данных, которая является MyDB1. Всякий раз, когда я создаю новый объект, он находится в MyDB1. Но я хочу запускать/создавать объекты в другой БД.

Я попытался запустить следующую команду, которая очень проста и отлично работает в 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.

Мой код С# для выполнения опубликованного скрипта находится здесь:

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?

спросил(а) 2021-01-25T16:33:01+03:00 4 месяца, 2 недели назад
1
Решение
63

USE - это команда SSMS, а не оператор SQL.

Измените строку подключения, чтобы указать соответствующую базу данных.

ответил(а) 2021-01-25T16:33:01+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема