Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Describe cómo cargar o migrar archivos a FileTables.
Cargar o migrar archivos a una FileTable
El método que elija para cargar o migrar archivos a una FileTable depende de dónde se almacenan los archivos actualmente.
Ubicación actual de los archivos | Opciones para la migración |
---|---|
Los archivos se almacenan actualmente en el sistema de archivos. SQL Server no tiene conocimiento de los archivos. |
Dado que una FileTable aparece como una carpeta en el sistema de archivos de Windows, puede cargar fácilmente archivos en una nueva FileTable mediante cualquiera de los métodos disponibles para mover o copiar archivos. Estos métodos incluyen el Explorador de Windows, las opciones de línea de comandos, como xcopy y robocopy, así como scripts o aplicaciones personalizados. No se puede convertir una carpeta existente en una FileTable. |
Los archivos se almacenan actualmente en el sistema de archivos. SQL Server contiene una tabla de metadatos que contiene punteros a los archivos. |
El primer paso es mover o copiar los archivos mediante uno de los métodos mencionados anteriormente. El segundo paso es actualizar la tabla de metadatos existente para que apunte a la nueva ubicación de los archivos. Para obtener más información, vea Ejemplo: Migración de archivos desde el sistema de archivos a una FileTable en este tema. |
Cómo: Cargar archivos en una FileTable
Los métodos que puede usar para cargar archivos en una FileTable incluyen los siguientes:
Arrastre y coloque archivos de las carpetas de origen a la nueva carpeta FileTable en el Explorador de Windows.
Utiliza opciones de la línea de comandos como MOVE, COPY, XCOPY o ROBOCOPY desde la consola de comandos o en un archivo por lotes o script.
Escriba una aplicación personalizada en C# o Visual Basic.NET que use métodos del espacio de nombres System.IO para mover o copiar los archivos.
Ejemplo: Migración de archivos desde el sistema de archivos a una FileTable
En este escenario, los archivos se almacenan en el sistema de archivos y tiene usted una tabla de metadatos en SQL Server, que contiene punteros a los archivos. Quiere mover los archivos a un FileTable y luego reemplazar la ruta de acceso UNC original de cada archivo en los metadatos por la ruta de acceso UNC del FileTable. La función GetPathLocator (Transact-SQL) le ayuda a lograr este objetivo.
En este ejemplo, supongamos que hay una tabla de base de datos existente, , PhotoMetadata
que contiene datos sobre fotografías. Esta tabla tiene una columna UNCPath
de tipo varchar
(512) que contiene la ruta de acceso UNC real a un archivo .jpg.
Para migrar los archivos de imagen del sistema de archivos a una FileTable, debe hacer lo siguiente:
Cree una nueva FileTable para almacenar los archivos. En este ejemplo se usa el nombre de la tabla,
dbo.PhotoTable
, pero no se muestra el código para crear la tabla.Use xcopy o una herramienta similar para copiar los archivos .jpg, con su estructura de directorios, en el directorio raíz de FileTable.
Corrija los metadatos de la
PhotoMetadata
tabla mediante código similar al siguiente:
-- Add a path locator column to the PhotoMetadata table.
ALTER TABLE PhotoMetadata ADD pathlocator hierarchyid;
-- Get the root path of the Photo directory on the File Server.
DECLARE @UNCPathRoot varchar(100) = '\\RemoteShare\Photographs';
-- Get the root path of the FileTable.
DECLARE @FileTableRoot varchar(1000);
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
-- Update the PhotoMetadata table.
-- Replace the File Server UNC path with the FileTable path.
UPDATE PhotoMetadata
SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.
UPDATE PhotoMetadata
SET pathlocator = GetPathLocator(UNCPath);
Carga masiva de archivos en una FileTable
Una FileTable se comporta como una tabla normal para las operaciones masivas, con las siguientes calificaciones.
Una FileTable tiene restricciones definidas por el sistema que garantizan que se mantenga la integridad del espacio de nombres de archivo y directorio. Estas restricciones deben comprobarse en los datos cargados de forma masiva en FileTable. Dado que algunas operaciones de inserción masiva permiten omitir las restricciones de tabla, se aplican los siguientes requisitos.
Las operaciones de carga masiva que aplican restricciones se pueden ejecutar en una FileTable como en cualquier otra tabla. Esta categoría incluye las siguientes operaciones:
bcp con la cláusula CHECK_CONSTRAINTS.
BULK INSERT con cláusula CHECK_CONSTRAINTS.
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) sin cláusula IGNORE_CONSTRAINTS.
Se produce un error en las operaciones de carga masiva que no aplican restricciones a menos que se hayan deshabilitado las restricciones definidas por el sistema de FileTable. Esta categoría incluye las siguientes operaciones:
bcp sin la cláusula CHECK_CONSTRAINTS.
BULK INSERT sin la cláusula CHECK_CONSTRAINTS.
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) con la cláusula IGNORE_CONSTRAINTS.
Cómo: Cargar archivos de forma masiva en una FileTable
Puede usar varios métodos para cargar archivos de forma masiva en una FileTable:
Bcp
Usa la cláusula CHECK_CONSTRAINTS.
Deshabilite el espacio de nombres FileTable y llame sin la cláusula CHECK_CONSTRAINTS. A continuación, vuelva a habilitar el espacio de nombres FileTable.
BULK INSERT
Llame con la cláusula CHECK_CONSTRAINTS .
Deshabilite el espacio de nombres FileTable y realice una llamada sin la cláusula CHECK_CONSTRAINTS. A continuación, vuelva a habilitar el espacio de nombres FileTable.
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)
Llame a con la cláusula IGNORE_CONSTRAINTS .
Deshabilite el espacio de nombres FileTable y llame a sin la cláusula IGNORE_CONSTRAINTS . Luego, vuelva a habilitar el espacio de nombres de FileTable.
Para obtener información sobre cómo deshabilitar las restricciones de FileTable, vea Administrar FileTables.
Cómo: Deshabilitar restricciones de FileTable para la carga masiva
Para cargar archivos de forma masiva en una FileTable sin la sobrecarga de aplicar las restricciones definidas por el sistema, puede deshabilitar temporalmente las restricciones. Para obtener más información, vea Administrar FileTables.
Véase también
Acceso a FileTables con Transact-SQL
Acceso a FileTables con las API de File Input-Output