Ich habe einen SQL -Server, der viele Datenbanken enthält. Diese Datenbanken haben alle die gleiche Tabellenstruktur. Ich erstelle eine C# App, um eine Verbindung zu diesem Server herzustellen, und führt dann gespeicherte Prozeduren aus. Ich habe eine gespeicherte Prozedur in einer der Datenbanken erstellt und mein C# -Codel stellt eine Verbindung zu und führt sie gut aus. Meine Frage ist: Kann ich eine gespeicherte Prozedur erstellen, die ich den Datenbanknamen an übergeben und es ausführen kann?
Mein C# ist ziemlich einfach. Ich habe die Helferklasse erstellt, um meine Verbindungszeichenfolge zu erstellen. < /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>
Ich übergende derzeit in den Datenbanknamen 'SelectedDb', um eine Verbindung zu und die Auslauf -ID 'Runid' zu suchen.
Mein gespeicherter Vorgang ist einfach. >
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>
Ich habe mit einer Tabelle in der Master -Datenbank verbunden und einfach diese Abfrage ausgeführt. < /p>
SELECT RunId, RunDate, ActualDate, StopDate
FROM RP_Reserved_1.dbo.ProcessRuns
< /code>
Es ging in die andere Datenbank und gab die Daten zurück. Das lässt mich denken, dass es möglich ist, aber ich habe wirklich keine Ahnung, wie es funktioniert. Ich möchte vermeiden, in jede Datenbank zu gehen und genau dieselbe gespeicherte Prozedur darin zu erstellen. < /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>
Dann haben Sie < /p>
var output = connection.Query("dbo.GetRun @SelectedDB, @RunId", new { SelectedDB = selectedDB, RunId = runId }).ToList();
Ich habe einen SQL -Server, der viele Datenbanken enthält. Diese Datenbanken haben alle die gleiche Tabellenstruktur. Ich erstelle eine C# App, um eine Verbindung zu diesem Server herzustellen, und führt dann gespeicherte Prozeduren aus. Ich habe eine gespeicherte Prozedur in einer der Datenbanken erstellt und mein C# -Codel stellt eine Verbindung zu und führt sie gut aus. Meine Frage ist: Kann ich eine gespeicherte Prozedur erstellen, die ich den Datenbanknamen an übergeben und es ausführen kann? Mein C# ist ziemlich einfach. Ich habe die Helferklasse erstellt, um meine Verbindungszeichenfolge zu erstellen. < /P> [code]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> Ich übergende derzeit in den Datenbanknamen 'SelectedDb', um eine Verbindung zu und die Auslauf -ID 'Runid' zu suchen. Mein gespeicherter Vorgang ist einfach. > 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> Ich habe mit einer Tabelle in der Master -Datenbank verbunden und einfach diese Abfrage ausgeführt. < /p> SELECT RunId, RunDate, ActualDate, StopDate FROM RP_Reserved_1.dbo.ProcessRuns < /code> Es ging in die andere Datenbank und gab die Daten zurück. Das lässt mich denken, dass es möglich ist, aber ich habe wirklich keine Ahnung, wie es funktioniert. Ich möchte vermeiden, in jede Datenbank zu gehen und genau dieselbe gespeicherte Prozedur darin zu erstellen. < /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> Dann haben Sie < /p> var output = connection.Query("dbo.GetRun @SelectedDB, @RunId", new { SelectedDB = selectedDB, RunId = runId }).ToList(); [/code] Ist das möglich und wenn ja, wie?
Ich habe eine SQL -Serverinstanz, die viele Datenbanken enthält. Diese Datenbanken haben alle die gleiche Tabellenstruktur. Ich erstelle eine C# App, um eine Verbindung zu diesem Server herzustellen...
Ich versuche, das folgende Skript auszuführen, das eine gespeicherte Prozedur in meiner Postgre-Datenbank erstellen soll:
CREATE OR REPLACE PROCEDURE public.select_data()
LANGUAGE sql
BEGIN ATOMIC...