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


FILESTREAM támogatás az SQL Server OLE DB Driver programjában

A következőkre vonatkozik:SQL Server Windows rendszeren

OLE DB-illesztő letöltése

Az SQL Server 2008-tól (10.0.x) kezdve az OLE DB Driver for SQL Server támogatja a továbbfejlesztett FILESTREAM funkciót. A mintákért lásd a FILESTREAM és OLE DB oldalakat.

A FILESTREAM lehetőséget kínál nagy bináris értékek tárolására és elérésére, akár SQL Serveren, akár közvetlen hozzáféréssel a Windows fájlrendszerhez. A nagy bináris érték 2 gigabájtnál (GB) nagyobb. További információért a továbbfejlesztett FILESTREAM támogatásról lásd: FILESTREAM (SQL Server).

Amikor egy adatbázis-kapcsolatot megnyitnak, @@TEXTSIZE-1 alapértelmezés szerint (korlátlan) állapotban van.

Lehetséges a FILESTREAM oszlopokhoz való hozzáférés és frissítés Windows fájlrendszer API-k segítségével is.

További információért lásd: Access FILESTREAM Data with OpenSqlFilestream.

FILESTREAM oszlopok lekérdezése

Az OLE DB-ben lévő sémasorhalmazok nem jelentik, hogy egy oszlop FILESTREAM oszlop-e. ITableDefinition az OLE DB-ben nem használható FILESTREAM oszlop létrehozására.

A FILESTREAM oszlopok létrehozásához vagy annak felismeréséhez, hogy mely meglévő oszlopok FILESTREAM oszlopok, is_filestream használhatjuk a sys.columns katalógus nézet oszlopát.

A következő szkriptrendszer egy példa:

-- Create a table with a FILESTREAM column.
CREATE TABLE Bob_01 (
    GuidCol1 UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(),
    IntCol2 INT,
    varbinaryCol3 VARBINARY(MAX) FILESTREAM
);

-- Find FILESTREAM columns.
SELECT name
FROM sys.columns
WHERE is_filestream = 1;

-- Determine whether a column is a FILESTREAM column.
SELECT is_filestream
FROM sys.columns
WHERE name = 'varbinaryCol3'
    AND object_id IN (
        SELECT object_id
        FROM sys.tables
        WHERE name = 'Bob_01'
    );

Down-Level Kompatibilitás

Ha az ügyfeled az OLE DB Driver for SQL Server segítségével lett fordítva, és az alkalmazás csatlakozik az SQL Server 2012 (11.x) és újabb verziókhoz, akkor a varbinary(max) viselkedés kompatibilis az SQL Server Native Client által az SQL Server 2005 (9.x) rendszerében bevezetett viselkedéssel. Vagyis a visszaküldött adatok maximális mérete 2 GB-ra korlátozott. 2 GB-nál nagyobb eredményértékek esetén csonkítás történik, és "string adat jobb levágása" figyelmeztetés jelenik meg.

Amikor az adattípus kompatibilitást 80-ra állítjuk, az ügyfél viselkedése összhangban van az alsóbb szintű kliensek viselkedésével.

Az SQLOLEDB-t vagy más, SQL Server 2005 (9.x) előtt megjelent szolgáltatókat használó ügyfelek esetében a varbinary(max)képhez van leképezve.

Comments

  • A 2 GB feletti varbináris (maximum) értékek küldéséhez és fogadásához egy alkalmazás paraméter- és eredménykötéseket használ DBTYPE_IUNKNOWN . Paraméterekhez a szolgáltatónak az ISequentialStream esetén az IUnknown::QueryInterface funkciót kell hívnia, illetve az ISequentialStream-et visszaadó eredmények esetén.

  • Az OLE DB esetén az ISequentialStream értékekhez kapcsolódó ellenőrzés lazítva van. Ha a wType a DBBINDING szerkezetben DBTYPE_IUNKNOWN van, a hosszellenőrzés letiltható dwPart-ból kihagyássalDBPART_LENGTH, vagy az adat hosszának (az adatpufferben elolló obLength-nél) beállításával.~0 Ebben az esetben a szolgáltató nem ellenőrzi az érték hosszát, hanem kéri és visszaküldi az összes elérhető adatot a streamen keresztül. Ez a változás minden nagy objektum (LOB) típusra és XML-re érvényes, de csak akkor van SQL Server 2005 (9.x) (vagy újabb szerverekhez) csatlakoztatva. Ez nagyobb rugalmasságot biztosít a fejlesztőknek, miközben fenntartja a konzisztenciát és visszafelé kompatibilitást a meglévő alkalmazások és az alsóbb szintű szerverek számára. Ez a változás minden adatátviteli felületet érint, elsősorban IRowset::GetData, ICommand::Execute, és IRowsetFastLoad::InsertRow.