Wir haben 3 SQL Server 2012-Instanzen, 2 davon sind wir nicht db_owner
. Einige unserer gespeicherten Prozeduren verwenden DMV und sys
Ansichten und gespeicherte Prozeduren, die nur funktionieren, wenn sie lokal ausgeführt werden.
Ich möchte die Ausführung dieser (unserer) gespeicherten Prozeduren in unserer Hauptinstanz zentralisieren und von dort aus diese gespeicherten Prozeduren remote ausführen. Ich habe versucht, SQL Server Agent-Jobs zu verwenden, aber es erfordert eine Konfiguration, die ich nicht gerne mache und wahrscheinlich sowieso keinen Zugriff habe.
Gibt es eine Möglichkeit, eine gespeicherte Prozedur remote auszuführen, vorzugsweise über einen Verbindungsserver?
Bearbeiten: Wir können Verbindungsserver verwenden, openrowset
alles, was in einfachem SQL ausgeführt werden kann. Ich würde SSIS lieber nicht verwenden, da dies einen Teil des Prozesses von einfachem SQL trennen und mehrere Plattformen erfordern würde, um ihn auszuführen.
Klingt nach einem Job für SSIS. Richten Sie ein SSIS-Paket ein und verwenden Sie das
Execute SQL Task
, um Ihre gespeicherten Prozeduren auszuführen. Sie können die SSIS-Pakete dann über Agent-Jobs ausführen.quelle
Ich habe diesen Thread bei der Suche nach "Prozedur auf Verbindungsserver ausführen" gefunden. Meine Anforderung besteht jedoch darin, dasselbe Verfahren auszuführen, das auf mehreren Servern verfügbar ist, und ich habe Folgendes entwickelt, das Ihnen oder anderen Benutzern helfen kann:
Um Ihre Frage einfacher zu beantworten: Verwenden Sie den 4-teiligen Namen, um die Remote-Abfrage auszuführen:
Exec ('linkedservername.DBName.dbo.ProcedureName') ;
Die folgende Abfrage kann verwendet werden, um eine Prozedur auf einem Verbindungsserver (nicht auf einen beschränkt) auszuführen, die auf mehrere Verbindungsserver abzielt, die auf dem zentralen Server verfügbar sind (von dem aus dieses Skript ausgeführt wird):
quelle