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 2012 mediante SQL Server Management Studio o Transact-SQL.

En este tema

  • Antes de empezar:

    Limitaciones y restricciones

    Requisitos previos

    Seguridad

  • Para entregar una instantánea mediante FTP con:

    SQL Server Management Studio

    Transact-SQL

Antes de empezar

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 obtener 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.

Icono de flecha usado con el vínculo Volver al principio[Top]

Usar SQL Server Management Studio

Una vez configurado el servidor de FTP, especifique el directorio y la información de seguridad para este servidor en el cuadro de diálogo Propiedades de la publicación: <publicación>. Para obtener más información sobre el modo de tener acceso a este cuadro de diálogo, vea Ver y modificar propiedades de publicación.

Para especificar la información de FTP

  1. En el cuadro de diálogo Propiedades de la publicación: <publicación>, seleccione Permitir a los suscriptores descargar archivos de instantánea usando FTP (Protocolo de transferencia de archivos) en una de las páginas siguientes:

    • La página Instantánea de FTP, para las publicaciones transaccionales y de instantáneas, y las publicaciones de combinación para los publicadores que ejecuten versiones anteriores a Microsoft SQL Server 2005.

    • La página Instantánea de FTP e Internet, para las publicaciones de combinación de los publicadores que ejecuten 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ón y Contraseña.

    Por ejemplo, si el directorio raíz del servidor de FTP es \\servidorFTP\inicio y desea almacenar las instantáneas en \\servidorFTP\inicio\instantáneas, especifique \instantáneas\ftp para la propiedad Ruta de acceso de la carpeta raíz del servidor FTP (la replicación adjunta 'ftp' a la ruta de acceso de la carpeta de instantáneas al crear los 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 acerca de cómo especificar la ubicación de instantáneas predeterminada, vea Especificar la ubicación predeterminada de instantáneas (SQL Server Management Studio).

    • 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 Poner los archivos en la siguiente carpeta, en la página Instantánea del cuadro de diálogo Propiedades de la publicación: <publicación>. Para obtener más información acerca de las ubicaciones alternativas para la carpeta de instantáneas, vea Ubicaciones alternativas para las carpetas de instantáneas.

  4. Haga clic en Aceptar.

Icono de flecha usado con el vínculo Volver al principio[Top]

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

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

    • @ftp_address: la dirección del servidor FTP usada 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 el directorio raíz del servidor de FTP es \\servidorFTP\inicio y desea almacenar las instantáneas en \\servidorFTP\inicio\instantáneas, especifique \instantáneas\ftp para @ftp_subdirectory (la replicación anexa 'ftp' a la ruta de acceso de la carpeta de instantáneas al crear los archivos de instantáneas).

    • (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 publicación.

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

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

    • @ftp_address: la dirección del servidor FTP usada 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 el directorio raíz del servidor de FTP es \\servidorFTP\inicio y desea almacenar las instantáneas en \\servidorFTP\inicio\instantáneas, especifique \instantáneas\ftp para @ftp_subdirectory (la replicación anexa 'ftp' a la ruta de acceso de la carpeta de instantáneas al crear los archivos de instantáneas).

    • (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 publicació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, vea Crear una suscripción de extracción.

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, vea Crear una suscripción de extracción.

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 para el 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 de sqlcmd 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 de sqlcmd 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

Icono de flecha usado con el vínculo Volver al principio[Top]

Vea también

Conceptos

Conceptos sobre los 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