Megosztás a következőn keresztül:


Fájlok betöltése a FileTablesba

A következőkre vonatkozik:SQL Server

Ismerteti, hogyan tölthet be vagy migrálhat fájlokat a FileTablesba.

Fájlok betöltése vagy áttelepítése Fájltáblába

A fájlok Fájltáblába való betöltéséhez vagy áttelepítéséhez választott módszer attól függ, hogy a fájlok hol vannak jelenleg tárolva.

Fájlok aktuális helye A migrálás beállításai
A fájlok jelenleg a fájlrendszerben vannak tárolva.

Az SQL Server nem ismeri a fájlokat.
Mivel a FileTable mappaként jelenik meg a Windows fájlrendszerében, a fájlok áthelyezéséhez vagy másolásához elérhető módszerek bármelyikével egyszerűen betölthet fájlokat egy új FileTable-ba. Ezek a módszerek közé tartozik a Windows Intéző, a parancssori beállítások, például xcopy és robocopy, valamint egyéni szkriptek vagy alkalmazások.

Meglévő mappát nem konvertálhat Fájltáblává.
A fájlok jelenleg a fájlrendszerben vannak tárolva.

Az SQL Server tartalmaz egy metaadattáblát, amely a fájlokra mutató mutatókat tartalmaz.
Az első lépés a fájlok áthelyezése vagy másolása az előző módszerek egyikével.

A második lépés a meglévő metaadatok táblázatának frissítése, hogy a fájlok új helyére mutasson.

További információért lásd ebben a cikkben a példát: fájlok áttelepítése a fájlrendszerből egy FileTable-be.

Útmutató: Fájlok betöltése Fájltáblába

A fájlok Fájltáblába való betöltéséhez az alábbi módszereket használhatja:

  • Húzza és dobja be a fájlokat a forrásmappákból az új FileTable mappába a Windows Intézőben.

  • Használjon parancssori beállításokat, például move, copy, xcopyvagy robocopy a parancssorból vagy egy kötegfájlból vagy parancsfájlból.

  • Egyéni alkalmazás írásával áthelyezheti vagy másolhatja a fájlokat a C# vagy a Visual Basic .NET alkalmazásban. Metódusok meghívása a System.IO névtérből.

Példa: Fájlok áttelepítése a fájlrendszerből egy FileTable-ba

Ebben a forgatókönyvben a fájlok a fájlrendszerben vannak tárolva, és rendelkezik egy metaadattáblával az SQL Serverben, amely a fájlokra mutató mutatókat tartalmaz. Át szeretné helyezni a fájlokat egy FileTable-fájlba, majd a metaadatokban lévő egyes fájlok eredeti UNC elérési útját a FileTable UNC elérési útjára cserélni. A GetPathLocator függvény segít elérni ezt a célt.

Ebben a példában tegyük fel, hogy létezik egy meglévő adatbázistábla, PhotoMetadata, amely fényképek adatait tartalmazza. Ez a táblázat UNCPathvarchar(512) típusú tartalmaz, amely egy .jpg fájl tényleges UNC-elérési útját tartalmazza.

Ha a rendszerképfájlokat a fájlrendszerből egy FileTable-ba szeretné migrálni, a következő műveleteket kell elvégeznie:

  1. Hozzon létre egy új FileTable-t a fájlok tárolásához. Ez a példa a tábla nevét használja, dbo.PhotoTable, de nem jeleníti meg a táblát létrehozó kódot.

  2. Használja a(z) xcopy vagy egy hasonló eszközt, hogy a .jpg fájlokat a könyvtárszerkezetükkel együtt a FileTable gyökérkönyvtárába másolja.

  3. Javítsa ki a metaadatokat a PhotoMetadata táblában az alábbi példához hasonló kód használatával:

--  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);

Fájlok tömeges betöltése Fájltáblába

A FileTable a tömeges műveletek normál tábláihoz hasonlóan viselkedik. A FileTable rendszer által definiált korlátozásokkal rendelkezik, amelyek biztosítják a fájl- és könyvtárnévtér integritásának fenntartását. Ezeket a korlátozásokat ellenőrizni kell a Fájltáblába tömegesen betöltött adatokon. Mivel egyes tömeges beszúrási műveletek lehetővé teszik a táblakorlátozások figyelmen kívül hagyását, a rendszer a következő követelményeket érvényesíti.

  • A korlátozásokat kikényszerítő tömeges betöltési műveletek futtathatók fájltáblán, mint bármely más táblán. Ez a kategória a következő műveleteket tartalmazza:

    • bcp a(z) CHECK_CONSTRAINTS záradékkal.
    • BULK INSERT a CHECK_CONSTRAINTS záradékkal.
    • INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) a IGNORE_CONSTRAINTS záradék nélkül.
  • A kényszereket nem érvényesítő tömeges betöltési műveletek meghiúsulnak, hacsak a FileTable rendszer által definiált kényszerek nincsenek letiltva. Ez a kategória a következő műveleteket tartalmazza:

    • bcpCHECK_CONSTRAINTS záradék nélkül.
    • BULK INSERT CHECK_CONSTRAINTS záradék nélkül.
    • INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) a IGNORE_CONSTRAINTS záradékkal.

Útmutató: Fájlok tömeges betöltése Fájltáblába

Különböző módszerekkel tömegesen tölthet be fájlokat a FileTable-ba:

Hívás a CHECK_CONSTRAINTS-os záradékkal.

Tiltsa le a FileTable névteret, és hívja meg a CHECK_CONSTRAINTS záradék nélkül. Ezután engedélyezze újra a FileTable névteret.

A FileTable-korlátozások letiltásáról további információt a FileTables kezelésecímű témakörben talál.

Útmutató: A FileTable korlátozásainak letiltása tömeges betöltéshez

Ha a rendszer által meghatározott korlátozások kényszerítése nélkül szeretné tömegesen betölteni a fájlokat a FileTable-ba, ideiglenesen letilthatja a korlátozásokat. További információ: FileTables kezelése.