Создать хранимую процедуру SQL, которая может работать против нескольких баз данныхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Создать хранимую процедуру SQL, которая может работать против нескольких баз данных

Сообщение Anonymous »

У меня есть сервер SQL, который содержит много баз данных. Все эти базы данных имеют одинаковую структуру таблицы. Я создаю приложение C# для подключения к этому серверу, а затем запускаю хранимые процедуры. Я создал хранимую процедуру в одной из баз данных, и мой код C# подключается к ней и запускает ее. Мой вопрос: могу ли я создать хранимую процедуру, которую я могу передать имя базы данных и заставить ее запустить.
Мой C# довольно прост. Я создал помощник класса для создания строки подключения. < /P>

Код: Выделить всё

public List
 GetRunId(string selectedDB, string runId)
{
using (IDbConnection connection = new Microsoft.Data.SqlClient.SqlConnection(Helper.CnnVal(selectedDB)))
{
var output = connection.Query("dbo.GetRun @RunId", new { RunId = runId }).ToList();
return output;
}
}
< /code>
В настоящее время я передаю имя базы данных 'selectedDB' для подключения и идентификатор запуска 'runId' для поиска.
Моя хранящаяся процедура проста. >
USE [RP_Reserved_1]
GO
/****** Object:  StoredProcedure [dbo].[GetRun]    Script Date: 02/13/2025 14:25:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GetRun] @RunId char(36) AS
select RunId, RunDate, ActualDate, StopDate from ProcessRuns where RunId = @RunId
< /code>
Я подключился к таблице в главной базе данных и просто запустил этот запрос. < /p>
SELECT     RunId, RunDate, ActualDate, StopDate
FROM         RP_Reserved_1.dbo.ProcessRuns
< /code>
Он перенесла в другую базу данных и вернул данные. Это заставляет меня думать, что это возможно, но я действительно понятия не имею, как заставить его работать. Я хочу избежать хода посещения каждой базы данных и создавать в ней ту же хранимую процедуру.
Мое намерение состоит в том, чтобы создать одну сохраненную процедуру, а затем передать, какую базу данных я хочу, чтобы она работала.
, так что что -то вроде. < /p>
USE @SelectedDB
GO
/****** Object:  StoredProcedure [dbo].[GetRun]    Script Date: 02/13/2025 14:25:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GetRun] @RunId char(36) AS
select RunId, RunDate, ActualDate, StopDate from ProcessRuns where RunId = @RunId
< /code>
Тогда есть < /p>
var output = connection.Query("dbo.GetRun @SelectedDB, @RunId", new { SelectedDB = selectedDB, RunId = runId }).ToList();
это возможно, и если да, то как?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -databases
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»