Sample code for 30+ languages & platforms
SQL Server

SCP Upload Contents of String to Remote File

See more SCP Examples

Demonstrates how to upload the contents of a string variable using the SCP protocol (Secure Copy Protocol over SSH). The text is uploaded to a file in specific remote directory. If the file did not already exist, it is created. If it already existed, it is overwritten.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @ssh int
    EXEC @hr = sp_OACreate 'Chilkat.Ssh', @ssh OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Connect to an SSH server:
    DECLARE @hostname nvarchar(4000)

    DECLARE @port int

    -- Hostname may be an IP address or hostname:
    SELECT @hostname = 'www.some-ssh-server.com'
    SELECT @port = 22

    EXEC sp_OAMethod @ssh, 'Connect', @success OUT, @hostname, @port
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        RETURN
      END

    -- Wait a max of 5 seconds when reading responses..
    EXEC sp_OASetProperty @ssh, 'IdleTimeoutMs', 5000

    -- Authenticate using login/password:
    EXEC sp_OAMethod @ssh, 'AuthenticatePw', @success OUT, 'myLogin', 'myPassword'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        RETURN
      END

    -- Once the SSH object is connected and authenticated, we use it
    -- as the underlying transport in our SCP object.
    DECLARE @scp int
    EXEC @hr = sp_OACreate 'Chilkat.Scp', @scp OUT

    EXEC sp_OAMethod @scp, 'UseSsh', @success OUT, @ssh
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @scp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        EXEC @hr = sp_OADestroy @scp
        RETURN
      END

    DECLARE @content nvarchar(4000)
    SELECT @content = 'This string will be the contents of the remote file.'
    DECLARE @remotePath nvarchar(4000)
    SELECT @remotePath = 'uploads/text/testUtf8.txt'

    -- The utf-8 byte representation of the string will be uploaded.
    -- See https://www.chilkatsoft.com/p/p_463.asp for a list of valid charsets.
    DECLARE @charset nvarchar(4000)
    SELECT @charset = 'utf-8'

    -- This uploads to the "uploads/text" directory relative to the HOME
    -- directory of the SSH user account.  
    -- Note: The remote target directory must already exist on the SSH server.
    EXEC sp_OAMethod @scp, 'UploadString', @success OUT, @remotePath, @content, @charset
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @scp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        EXEC @hr = sp_OADestroy @scp
        RETURN
      END

    SELECT @remotePath = 'uploads/text/testUtf8_withBOM.txt'

    -- To include the utf-8 preamble (also known as the BOM),
    -- prefix the charset name with "bom:".  Any charset that can 
    -- optionally include a BOM can be specified in this way.
    SELECT @charset = 'bom:utf-8'

    -- Uploads to a remote file that contains text in the 
    -- utf-8 representation, including the BOM at the start of the file.
    EXEC sp_OAMethod @scp, 'UploadString', @success OUT, @remotePath, @content, @charset
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @scp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        EXEC @hr = sp_OADestroy @scp
        RETURN
      END


    PRINT 'SCP upload string success.'

    -- Disconnect
    EXEC sp_OAMethod @ssh, 'Disconnect', NULL

    EXEC @hr = sp_OADestroy @ssh
    EXEC @hr = sp_OADestroy @scp


END
GO