FILESTREAM-kompatibilitet med andra SQL Server funktioner

Gäller för:SQL Server

Eftersom FILESTREAM-data finns i filsystemet innehåller det här avsnittet några överväganden, riktlinjer och begränsningar för att använda FILESTREAM med följande funktioner i SQL Server:

služba SSIS (SSIS)

služba SSIS (SSIS) hanterar FILESTREAM-data i dataflödet som andra BLOB-data med hjälp av DT_IMAGE SSIS-datatypen.

Du kan använda transformeringen Importera kolumn för att läsa in filer från filsystemet till en FILESTREAM-kolumn. Du kan också använda transformeringen Exportera kolumn för att extrahera filer från en FILESTREAM-kolumn till en annan plats i filsystemet.

Distribuerade frågor och länkade servrar

Du kan arbeta med FILESTREAM-data via distribuerade frågor och länkade servrar genom att behandla dem som varbinary(max) -data. Du kan inte använda funktionen FILESTREAM PathName() i distribuerade frågor som använder ett namn i fyra delar, även om namnet refererar till den lokala servern. Du kan dock använda PathName() i den inre frågan för en direktfråga som använder OPENQUERY().

Encryption

FILESTREAM-data krypteras inte ens när transparent datakryptering är aktiverat.

Databasögonblick

SQL Server stöder inte database-ögonblicksbilder för FILESTREAM-filgrupper. Om en FILESTREAM-filgrupp ingår i en CREATE DATABASE ON-sats misslyckas instruktionen och ett fel utlöses.

När du använder FILESTREAM kan du skapa databasögonblicksbilder av standardfilgrupper (icke-FILESTREAM). FILESTREAM-filgrupperna är markerade som offline för dessa databasögonblicksbilder.

En SELECT-instruktion som körs på en FILESTREAM-tabell i en databasögonblicksbild får inte innehålla en FILESTREAM-kolumn. annars returneras följande felmeddelande:

Could not continue scan with NOLOCK due to data movement.

Replikering

En varbinary(max) kolumn som har filestream-attributet aktiverat på Publisher kan replikeras till en prenumerant med eller utan attributet FILESTREAM. Om du vill ange hur kolumnen replikeras använder du dialogrutan Artikelegenskaper – <artikel> eller parametern @schema_optionför sp_addarticle eller sp_addmergearticle. Data som replikeras till en kolumn med varbinary(max) som inte har attributet FILESTREAM får inte överskrida gränsen på 2 GB för den datatypen. annars genereras ett körningsfel. Vi rekommenderar att du replikerar attributet FILESTREAM, såvida du inte replikerar data till SQL Server 2005 (9.x). Replikering av tabeller som har FILESTREAM-kolumner till SQL Server 2000 (8.x)-prenumeranter stöds inte, oavsett vilket schemaalternativ som anges.

Anmärkning

Replikering av stora datavärden från SQL Server till SQL Server 2005 (9.x) Prenumeranter är begränsad till högst 256 MB datavärden. Mer information finns i Maximum Capacity Specifications (Högsta kapacitetsspecifikationer).

Överväganden för transaktionsreplikering

Om du använder FILESTREAM-kolumner i tabeller som publiceras för transaktionsreplikering bör du tänka på följande:

  • Om några tabeller innehåller kolumner som har attributet FILESTREAM kan du inte använda värden för databasögonblicksbild eller databasögonblickstecken för @sync_method egenskapen för sp_addpublication.

  • Alternativet maximal storlek för textrepling anger den maximala mängden data som kan infogas i en kolumn som publiceras för replikering. Det här alternativet kan användas för att styra storleken på FILESTREAM-data som replikeras.

  • Om du anger schemaalternativet för att replikera attributet FILESTREAM, men filtrerar bort kolumnen uniqueidentifier som FILESTREAM kräver, eller om du anger att inte replikera DEN UNIKA begränsningen för kolumnen, replikerar replikeringen inte FILESTREAM-attributet. Kolumnen replikeras endast som en kolumn med varbinary(max).

Överväganden för sammanslagningsreplikering

Om du använder FILESTREAM-kolumner i tabeller som publiceras för sammanslagningsreplikering bör du tänka på följande:

  • Både sammanslagningsreplikering och FILESTREAM kräver en kolumn av datatypen uniqueidentifier för att identifiera varje rad i en tabell. Sammanslagningsreplikering lägger automatiskt till en kolumn om tabellen inte har någon. Sammanslagningsreplikering kräver att kolumnen har egenskapen ROWGUIDCOL angiven och ett standardvärde på NEWID() eller NEWSEQUENTIALID(). Förutom dessa krav kräver FILESTREAM att en UNIK begränsning definieras för kolumnen. Dessa krav får följande konsekvenser:

    • Om du lägger till en FILESTREAM-kolumn i en tabell som redan har publicerats för sammanslagningsreplikering kontrollerar du att kolumnen uniqueidentifier har en UNIK begränsning. Om den inte har en unik begränsning lägger du till en namngiven begränsning i tabellen i publikationsdatabasen. Som standard publicerar sammanslagningsreplikeringen den här schemaändringen och tillämpas på varje prenumerationsdatabas.

      Om du lägger till en UNIK begränsning manuellt enligt beskrivningen och du vill ta bort sammanslagningsreplikeringen måste du först ta bort den UNIKA begränsningen. annars misslyckas replikeringsborttagningen.

    • Som standard använder sammanslagningsreplikering NEWSEQUENTIALID() eftersom det kan ge bättre prestanda än NEWID(). Om du lägger till en unikidentifierarkolumn i en tabell som ska publiceras för sammanslagningsreplikering anger du NEWSEQUENTIALID() som standard.

  • Sammanslagningsreplikering innehåller en optimering för replikering av stora objekttyper. Den här optimeringen styrs av parametern @stream_blob_columnsför sp_addmergearticle. Om du anger schemaalternativet för att replikera attributet @stream_blob_columns FILESTREAM anges parametervärdet till true. Den här optimeringen kan åsidosättas med hjälp av sp_changemergearticle. Med den här lagrade proceduren kan du ange @stream_blob_columnsfalse. Om du lägger till en FILESTREAM-kolumn i en tabell som redan har publicerats för sammanslagningsreplikering rekommenderar vi att du anger alternativet till true med hjälp av sp_changemergearticle.

  • Om du aktiverar schemaalternativet för FILESTREAM när en artikel har skapats kan replikeringen misslyckas om data i en FILESTREAM-kolumn överskrider 2 GB och det finns en konflikt under replikeringen. Om du förväntar dig att den här situationen ska uppstå rekommenderar vi att du släpper och återskapar tabellartikeln med lämpligt FILESTREAM-schemaalternativ aktiverat vid skapandetillfället.

  • Sammanfogningsreplikering kan synkronisera FILESTREAM-data över en HTTPS-anslutning med hjälp av webbsynkronisering. Dessa data får inte överskrida gränsen på 50 MB för webbsynkronisering. annars genereras ett körningsfel.

Loggöverföring

Log shipping stöder FILESTREAM. Både de primära och sekundära servrarna måste köra SQL Server 2008 (10.0.x) eller en senare version och ha FILESTREAM aktiverat.

Databas-spegeling

Databasspegling stöder inte FILESTREAM. Det går inte att skapa en FILESTREAM-filgrupp på huvudservern. Databasspegling kan inte konfigureras för en databas som innehåller FILESTREAM-filgrupper.

Full-Text indexering

Fulltextindexering fungerar med en FILESTREAM-kolumn på samma sätt som med en kolumn med varbinary(max). TABELLEN FILESTREAM måste ha en kolumn som innehåller filnamnstillägget för varje FILESTREAM BLOB. Mer information finns i Query with Full-Text Search, Configure and Manage Filters for Search, and sys.fulltext_document_types (Transact-SQL).

Fulltextmotorn indexerar innehållet i FILESTREAM BLOBs. Indexering av filer som bilder kanske inte är användbart. När en FILESTREAM-BLOB uppdateras indexeras den om.

Failoverkluster

För redundanskluster måste FILESTREAM-filgrupper placeras på en delad disk. FILESTREAM måste vara aktiverat på varje nod i klustret som ska vara värd för FILESTREAM-instansen. Mer information finns i Konfigurera FILESTREAM på ett redundanskluster.

SQL Server Express

SQL Server Express stöder FILESTREAM. Storleksgränsen på 10 GB för databasen inkluderar inte FILESTREAM-datacontainern.

Inneslutna databaser

Funktionen FILESTREAM kräver viss konfiguration utanför databasen. Därför är en databas som använder FILESTREAM eller FileTable inte fullständigt innesluten.

Du kan ställa in databas containment till PARTIAL om du vill använda vissa funktioner i inneslutna databaser, till exempel inneslutna användare. I det här fallet måste du dock vara medveten om att vissa av databasinställningarna inte finns i databasen och inte flyttas automatiskt när databasen flyttas.

Se även

Data om binärt stort objekt (blob) (SQL Server)