Sample code for 30+ languages & platforms
SQL Server

SCP Download Files Matching a Pattern, such as *.txt

See more SCP Examples

Demonstrates how to SCP download files matching a pattern, such as *.txt.

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
    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)
    SELECT @hostname = 'MY-SSH-SERVER-DOMAIN-OR-IP'
    DECLARE @port int
    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, 'MY-SSH-LOGIN', 'MY-SSH-PASSWORD'
    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, use it
    --  in the 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

    EXEC sp_OASetProperty @scp, 'HeartbeatMs', 200

    --  Set the SyncMustMatch property to "*.pem" to download only .pem files
    EXEC sp_OASetProperty @scp, 'SyncMustMatch', '*.pem'

    DECLARE @remoteDir nvarchar(4000)
    SELECT @remoteDir = 'qa_syncA'
    DECLARE @localDir nvarchar(4000)
    SELECT @localDir = 'c:/aaworkarea/scp/qa_syncA'

    --  Download synchronization modes:
    --  mode=0: Download all files
    --  mode=1: Download all files that do not exist on the local filesystem.
    --  mode=2: Download newer or non-existant files.
    --  mode=3: Download only newer files.  
    --          If a file does not already exist on the local filesystem, it is not downloaded from the server.
    --  mode=5: Download only missing files or files with size differences.
    --  mode=6: Same as mode 5, but also download newer files.
    DECLARE @mode int
    SELECT @mode = 0

    --  Do not recurse the remote directory tree.  Only download files matching *.pem
    --  from the given remote directory.
    DECLARE @bRecurse int
    SELECT @bRecurse = 0

    EXEC sp_OAMethod @scp, 'SyncTreeDownload', @success OUT, @remoteDir, @localDir, @mode, @bRecurse
    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 download matching success.'

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

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


END
GO