Compartir a través de


Entregar una instantánea mediante FTP

En este tema se describe cómo entregar una instantánea a través de FTP en SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL.

Limitaciones y restricciones

  • El Agente de instantáneas debe tener permisos de escritura para el directorio especificado y el Agente de distribución o de mezcla debe tener permisos de lectura. Si usa suscripciones de extracción, debe especificar un directorio compartido como una ruta de acceso UNC (Convención de nomenclatura universal), por ejemplo \\servidorFTP\inicio\instantáneas. Para obtener más información, vea Proteger la carpeta de instantáneas.

Requisitos previos

  • Para transferir archivos de instantáneas con el Protocolo de transferencia de archivos (FTP), primero debe configurar un servidor de FTP. Para obtener más información, vea la documentación de Microsoft Internet Information Services (IIS).

Seguridad

Para contribuir a mejorar la seguridad, se recomienda implementar una red privada virtual (VPN) al utilizar la entrega de instantáneas a través de FTP por Internet. Para más información, vea Publicar datos a través de Internet mediante VPN.

Por seguridad, se recomienda no permitir el inicio de sesión anónimo en el servidor de FTP. El Agente de instantáneas debe tener permisos de escritura para el directorio especificado y el Agente de distribución o de mezcla debe tener permisos de lectura. Si usa suscripciones de extracción, debe especificar un directorio compartido como una ruta de acceso UNC (Convención de nomenclatura universal), por ejemplo \\servidorFTP\inicio\instantáneas. Para obtener más información, vea Proteger la carpeta de instantáneas.

Cuando sea posible, pida a los usuarios que proporcionen sus credenciales en tiempo de ejecución. Si almacena las credenciales en un archivo de script, debe proteger el archivo.

Uso de SQL Server Management Studio

Una vez configurado el servidor FTP, especifique el directorio y la información de seguridad de este servidor en el cuadro de diálogo Publicación de propiedades <de la publicación> . Para obtener más información sobre el acceso a este cuadro de diálogo, vea View and Modify Publication Properties.

Para especificar la información de FTP

  1. En el cuadro de diálogo Propiedades de la publicación : <publicación> , seleccione Permitir que los suscriptores descarguen archivos de instantáneas mediante FTP desde una de las páginas siguientes:
    • La página Instantánea ftp, para publicaciones transaccionales y de instantáneas, y publicaciones de combinación para publicadores que ejecutan versiones anteriores a Microsoft SQL Server 2005.
    • La página Instantánea ftp e Internet, para publicaciones de combinación de publicadores que ejecutan SQL Server 2005 o posterior.
  2. Especifique valores para Nombre del servidor FTP, Número de puerto, Ruta de acceso de la carpeta raíz del servidor FTP, Inicio de sesióny Contraseña.
    Por ejemplo, si la raíz del servidor FTP es \\ftpserver\home y desea que las instantáneas se almacenen en \\ftpserver\home\snapshots, especifique \snapshots\ftp para la propiedad Ruta de acceso de la carpeta raíz ftp (la replicación anexa "ftp" a la ruta de acceso de la carpeta de instantáneas cuando crea archivos de instantáneas).
  3. Especifique que el Agente de instantáneas copie los archivos de instantáneas en el directorio especificado en el paso 2. Por ejemplo, para que el Agente de instantáneas copie los archivos de instantáneas en \\servidorFTP\inicio\instantáneas\ftp, debe especificar la ruta de acceso \\servidorFTP\inicio\instantáneas en uno de estos dos lugares:
    • La ubicación de instantáneas predeterminada en el distribuidor asociado con esta publicación.
      Para obtener más información sobre cómo especificar la ubicación de instantánea predeterminada, vea Especificar la ubicación de instantánea predeterminada.
    • Una carpeta de instantáneas alternativa para esta publicación. Se necesita una ubicación alternativa si la instantánea está comprimida.
      Escriba la ruta de acceso en el cuadro de texto Put files (Colocar archivos) en el cuadro de texto Siguiente carpeta de la página Instantánea del cuadro de diálogo Propiedades de la publicación: <publicación> .
  4. Haga clic en OK.

Usar Transact-SQL

Se puede establecer la opción para que los archivos de instantáneas estén disponibles en un servidor FTP y se puede modificar esta configuración mediante programación empleando los procedimientos almacenados de replicación. El procedimiento usado depende del tipo de publicación. La entrega de instantáneas a través de FTP solamente se usa con suscripciones de extracción.

Para habilitar la entrega de instantáneas a través de FTP para una publicación transaccional o de instantáneas

  1. En la base de datos de publicación del Publicador, ejecute sp_addpublication. Especifique @publication, un valor de true para @enabled_for_internet y los valores adecuados para los parámetros siguientes:

    • @ftp_address : la dirección del servidor FTP que se usa para entregar la instantánea.
    • (Opcional) @ftp_port : el puerto usado por el servidor FTP
    • (Opcional) @ftp_subdirectory : el subdirectorio del directorio FTP predeterminado asignado a un inicio de sesión de FTP. Por ejemplo, si la raíz del servidor FTP es \\ftpserver\home y quiere que las instantáneas se almacenen en \\ftpserver\home\ snapshots, especifique \snapshots\ftp para @ftp_subdirectory (la replicación anexa "ftp" a la ruta de acceso de la carpeta de instantáneas cuando crea archivos de instantánea).
    • (Opcional) @ftp_login : una cuenta de inicio de sesión usada al conectar al servidor FTP
    • (Opcional) @ftp_password : la contraseña para el inicio de sesión de FTP

    Esto crea una publicación que usa FTP. Para obtener más información, vea Crear una suscripción.

Para habilitar la entrega de instantáneas a través de FTP para una publicación de combinación

  1. En la base de datos de publicación del publicador, ejecute sp_addmergepublication. Especifique @publication, un valor de true para @enabled_for_internet y los valores adecuados para los parámetros siguientes:

    • @ftp_address : la dirección del servidor FTP que se usa para entregar la instantánea.
    • (Opcional) @ftp_port : el puerto usado por el servidor FTP
    • (Opcional) @ftp_subdirectory : el subdirectorio del directorio FTP predeterminado asignado a un inicio de sesión de FTP. Por ejemplo, si la raíz del servidor FTP es \\ftpserver\home y quiere que las instantáneas se almacenen en \\ftpserver\home\ snapshots, especifique \snapshots\ftp para @ftp_subdirectory (la replicación anexa "ftp" a la ruta de acceso de la carpeta de instantáneas cuando crea archivos de instantánea).
    • (Opcional) @ftp_login : una cuenta de inicio de sesión usada al conectar al servidor FTP
    • (Opcional) @ftp_password : la contraseña para el inicio de sesión de FTP

    Esto crea una publicación que usa FTP. Para obtener más información, vea Crear una suscripción.

Para crear una suscripción de extracción a una publicación transaccional o de instantáneas que usa la entrega de instantáneas a través de FTP

  1. En el publicador de la base de datos de suscripciones, ejecute sp_addpullsubscription. Especifique @publisher y @publication.

    • En el suscriptor de la base de datos de suscripciones, ejecute sp_addpullsubscription_agent. Especifique @publisher, @publisher_db, @publication, las credenciales de Microsoft Windows con las que se ejecuta el Agente de distribución en el suscriptor para @job_login y @job_password, y un valor de true para @use_ftp.
  2. En la base de datos de publicación del publicador, ejecute sp_addsubscription para registrar la suscripción de extracción. Para obtener más información, consulte Create a Pull Subscription.

Para crear una suscripción de extracción a una publicación de combinación que use la entrega de instantáneas a través de FTP

  1. En la base de datos de suscripciones del suscriptor, ejecute sp_addmergepullsubscription. Especifique @publisher y @publication.
  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_addmergepullsubscription_agent. Especifique @publisher, @publisher_db, @publication, las credenciales de Windows con las que se ejecuta el Agente de distribución en el suscriptor para @job_login y @job_password, y un valor de true para @use_ftp.
  3. En la base de datos de publicación del publicador, ejecute sp_addmergesubscription para registrar la suscripción de extracción. Para obtener más información, consulte Create a Pull Subscription.

Para cambiar una o más configuraciones de entrega de instantáneas a través de FTP para una publicación transaccional o de instantáneas

  1. En la base de datos de publicación del publicador, ejecute sp_changepublication. Especifique uno de los siguientes valores para @property y un nuevo valor de esta configuración para @value:

    • ftp_address: la dirección del servidor FTP usada para entregar la instantánea
    • ftp_port: el puerto usado por el servidor FTP
    • ftp_subdirectory: el subdirectorio del directorio FTP predeterminado usado para la instantánea de FTP
    • ftp_login: un inicio de sesión para conectar al servidor de FTP
    • ftp_password: la contraseña del inicio de sesión de FTP
  2. (Opcional) Repita el paso 1 para cada configuración de FTP que se está cambiando.

  3. (Opcional) Para deshabilitar la entrega de instantáneas a través de FTP, ejecute sp_changepublication en el Publicador de la base de datos de publicación. Especifique un valor de enabled_for_internet para @property y un valor de false para @value.

Para cambiar la configuración de entrega de instantáneas a través de FTP para una publicación de combinación

  1. En la base de datos de publicación del publicador, ejecute sp_changemergepublication. Especifique uno de los siguientes valores para @property y un nuevo valor de esta configuración para @value:

    • ftp_address: la dirección del servidor FTP usada para entregar la instantánea
    • ftp_port: el puerto usado por el servidor FTP
    • ftp_subdirectory: el subdirectorio del directorio FTP predeterminado usado para la instantánea de FTP
    • ftp_login: un inicio de sesión para conectar al servidor de FTP
    • ftp_password: la contraseña del inicio de sesión de FTP
  2. (Opcional) Repita el paso 1 para cada configuración de FTP que se está cambiando.

  3. (Opcional) Para deshabilitar la entrega de instantáneas a través de FTP, ejecute sp_changemergepublication en el Publicador de la base de datos de publicación. Especifique un valor de enabled_for_internet para @property y un valor de false para @value.

Ejemplos (Transact-SQL)

El ejemplo siguiente crea una publicación de combinación que permite a los Suscriptores tener acceso a los datos de instantánea usando FTP. El suscriptor debe usar una conexión VPN segura al obtener acceso al recurso compartido de FTP. Las variables de scripting desqlcmd se usan para proporcionar valores de inicio de sesión y de contraseña. Para obtener más información, vea Usar sqlcmd con variables de script.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Declarations for adding a merge publication.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @ftp_server AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @ftp_login AS sysname;
DECLARE @ftp_password AS sysname;
DECLARE @ftp_directory AS sysname;
DECLARE @snapshot_folder AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOfferMergeFtp'; 
SET @ftp_server = $(Server);
SET @login = $(Login);
SET @password = $(Password);
SET @ftp_login = $(FtpLogin);
SET @ftp_password = $(FtpPassword);
SET @ftp_directory = N'\snapshots\ftp';
-- The snapshot folder is the root FTP folder on the server 
-- with the \snapshot subdirectory.
SET @snapshot_folder = $(AlternateFolder);
SET @article = N'SpecialOffer'; 
SET @owner = N'Sales' 

-- Enable merge replication on the publication database.
USE master
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname=N'merge publish',
    @value = N'true' ;

-- Create a new merge publication, enabling FTP snapshot delivery. 
-- Specify the publication compatibility level or it will default to 
-- SQL Server 2000.
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- Specify the required parameters.
    @publication = @publication,
    @publication_compatibility_level = N'90RTM',
    @enabled_for_internet = N'true',
    @snapshot_in_defaultfolder = N'true',
    @alt_snapshot_folder = @snapshot_folder,
    @ftp_address = @ftp_server,
    @ftp_subdirectory = @ftp_directory,
    @ftp_login = @ftp_login,
    @ftp_password = @ftp_password;

-- Create the snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password;

-- Add an unfiltered article for the Customer table.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner, 
    @column_tracking = N'true'; 

-- Start the snapshot job for the publication.
EXEC sp_startpublication_snapshot 
    @publication = @publication;
GO

El ejemplo siguiente crea una suscripción a una publicación de combinación, donde el Suscriptor obtiene la instantánea mediante FTP. El suscriptor debe usar una conexión VPN segura al obtener acceso al recurso compartido de FTP. Las variables de scripting desqlcmd se usan para proporcionar valores de inicio de sesión y de contraseña. Para obtener más información, vea Usar sqlcmd con variables de script.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOfferMergeFtp';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @subscriber_type = N'local', 
    @subscription_priority = 0, 
    @sync_type = N'Automatic';
GO
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOfferMergeFtp'; 
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @subscriber_type = N'Local', 
    @subscription_priority = 0, 
    @sync_type = N'Automatic';

exec sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @distributor_security_mode = 1, 
    @use_ftp = N'true', 
    @job_login = @login, 
    @job_password = @password, 
    @publisher_security_mode = 1, 
    @use_web_sync = 0;
GO

Consulte también

Conceptos de procedimientos almacenados del sistema de replicación
Transferir instantáneas mediante FTP
Cambiar las propiedades de la publicación y de los artículos
Inicializar una suscripción con una instantánea