Gespeicherte Prozedur, um den status eines Verbindungsservers
Ich versuche zum erstellen einer gespeicherten Prozedur zum abrufen des status von einem verknüpften server befindet, um Fehler zu vermeiden, beim Versuch, führen etwas auf. Ich sah einige Beispiele online, aber ich bin nicht mit jeder Erfolg mit denen.
Hier ist mein code:
ALTER PROCEDURE [dbo].[checkLinkedServer]
@servername ntext
AS
BEGIN
SET NOCOUNT ON;
DECLARE @retval int = 0;
BEGIN TRY
EXEC @retval = sys.sp_testlinkedserver @servername;
SELECT 1;
END TRY
BEGIN CATCH
SELECT 0;
END CATCH;
END
Ich bin immer einen Rückgabewert von 0 - keine Rolle, ob die verlinkten server vorhanden ist oder nicht.
Irgendwelche Ideen, was mache ich hier falsch?
- Haben Sie versucht, läuft es ohne die beginnen, versuchen Sie, etc?
- Dies zeigt: Meldung 214, Ebene 16, Status, 90, Verfahren sp_testlinkedserver, Zeile 1 die Prozedur erwartet parameter '@servername' des Typs 'sysname'.
- Warum ist dein parameter
ntext
? Sie wissen, dass diese Art veraltet ist lange her, richtig? Haben Sie versucht, diesysname
(wie die Fehlermeldung schon vorgeschlagen!) odernvarchar(128)
? - ich weiß es nicht ... und nun, was ist der Ersatz geben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre @servername-parameter muss dem Datentyp sysname nicht ntext-wie die Fehlermeldung sagt
Wenn Sie können nicht ändern die parameter gehen in das Verfahren dann in Betracht ziehen, erstellen Sie eine neue variable innerhalb der Prozedur-und ein konvertieren:
Leider, die Dokumentation und die Umsetzung für
sp_testlinkedserver
inkonsistent sind, und das schon seit das Verfahren wurde Hinzugefügt, die in SQL Server 2005. BOL sagt, dass das Verfahren wird 1 zurückgegeben, bei Misserfolg.Für die Referenz, die Sie prüfen können : http://connect.microsoft.com/SQLServer/feedback/details/522821/sp-testlinkedserver-fails-catastrophically-when-linked-server-is-offline