SQL Server
SQL Server
Open a Custom SSH Channel Type
See more SSH Examples
Demonstrates the Chilkat Ssh.OpenCustomChannel method, which requests a channel whose application-defined type is supplied as the only argument. It returns the channel number, or -1 if the server rejects the channel. The server must implement that channel type.
Background: The SSH protocol allows vendor- and application-specific channel types beyond the standard
session and direct-tcpip kinds; by convention these carry an @domain suffix to avoid name collisions. This method is the escape hatch for talking to a server that implements such a type. On rejection, inspect ChannelOpenFailCode to learn why.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- Demonstrates the Ssh.OpenCustomChannel method, which requests a custom SSH channel whose
-- application-defined type is supplied as the only argument. It returns the channel number,
-- or -1 if the server rejects the channel. The server must implement that channel type.
DECLARE @ssh int
EXEC @hr = sp_OACreate 'Chilkat.Ssh', @ssh OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @sshPort int
SELECT @sshPort = 22
EXEC sp_OAMethod @ssh, 'Connect', @success OUT, 'ssh.example.com', @sshPort
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @ssh
RETURN
END
-- Normally you would not hard-code the password in source. You should instead obtain it
-- from an interactive prompt, environment variable, or a secrets vault.
DECLARE @password nvarchar(4000)
SELECT @password = 'mySshPassword'
EXEC sp_OAMethod @ssh, 'AuthenticatePw', @success OUT, 'mySshLogin', @password
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @ssh
RETURN
END
-- Request an application-defined channel type. The server must support it.
DECLARE @channelType nvarchar(4000)
SELECT @channelType = 'my-custom-channel@example.com'
DECLARE @channelNum int
EXEC sp_OAMethod @ssh, 'OpenCustomChannel', @channelNum OUT, @channelType
IF @channelNum < 0
BEGIN
EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @ssh
RETURN
END
PRINT 'Opened custom channel: ' + @channelNum
-- The channel is used with the normal channel send, receive, EOF, CLOSE, and release methods.
EXEC sp_OAMethod @ssh, 'Disconnect', NULL
EXEC @hr = sp_OADestroy @ssh
END
GO