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

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

Сообщение Anonymous »

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

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

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;
}
}
В настоящее время я передаю имя базы данных selecteddb для подключения и идентификатор запуска 'runid' для поиска.
my хранящаяся процедура проста: < /p>

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

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>
Так что -то вроде следующего: < /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>
Тогда я мог бы иметь этот код C#, вызовите его: < /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#»