Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server ve Windows
Od SQL Server 2008 (10.0.x) podporuje OLE DB Driver for SQL Server rozšířenou funkci FILESTREAM. Pro ukázky viz FILESTREAM a OLE DB.
FILESTREAM poskytuje způsob, jak ukládat a přistupovat k velkým binárním hodnotám, buď prostřednictvím SQL Serveru, nebo přímým přístupem k souborovému systému Windows. Velká binární hodnota je hodnota větší než 2 gigabajty (GB). Pro více informací o rozšířené podpoře FILESTREAM viz FILESTREAM (SQL Server).
Když je připojení k databázi otevřeno, @@TEXTSIZE je výchozí nastavení (-1neomezené).
Je také možné přistupovat ke sloupcům FILESTREAM a aktualizovat je pomocí API souborového systému Windows.
Pro více informací viz Access FILESTREAM Data with OpenSqlFilestream.
Dotaz na sloupce FILESTREAM
Sady řádků schématu v OLE DB neuvádějí, zda je sloupec FILESTREAM.
ITableDefinition v OLE DB nelze použít k vytvoření sloupce FILESTREAM.
Pro vytvoření sloupců FILESTREAM nebo pro detekci, které stávající sloupce jsou sloupci FILESTREAM, můžete použít sloupec is_filestream v zobrazení katalogu sys.columns .
Následující skript je příkladem:
-- 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 Kompatibilita
Pokud byl váš klient zkompilován pomocí OLE DB Driver for SQL Server a aplikace se připojuje k SQL Server 2012 (11.x) a novějším verzím, pak je varbinary(max) chování kompatibilní s chováním zavedeným SQL Server Native Client v SQL Server 2005 (9.x). To znamená, že maximální velikost vrácených dat je omezena na 2 GB. Pro hodnoty výsledků větší než 2 GB dochází k okrácení a zobrazí se varování "ořezávání dat řetězce vpravo".
Když je kompatibilita datových typů nastavena na 80, chování klienta je konzistentní s chováním klienta na nižší úrovni.
Pro klienty, kteří používají SQLOLEDB nebo jiné poskytovatele vydané před SQL Server 2005 (9.x), je varbinary(max) mapován na image.
Comments
Pro odesílání a přijímání varbinárních (max) hodnot větších než 2 GB aplikace používá
DBTYPE_IUNKNOWNvazby parametrů a výsledků in. Pro parametry musí poskytovatel volat IUnknown::QueryInterface pro ISequentialStream a pro výsledky, které vrací ISequentialStream.Pro OLE DB je kontrola související s hodnotami ISequentialStream uvolněná. Když je
DBTYPE_IUNKNOWNwType ve struktuřeDBBINDING, lze kontrolu délky deaktivovat buď vynechánímDBPART_LENGTHz dwPart, nebo nastavením délky dat (při offsetu obLength v datovém bufferu) na .~0V tomto případě poskytovatel nekontroluje délku hodnoty a požaduje a vrací všechna data dostupná v rámci streamu. Tato změna se aplikuje na všechny typy velkých objektů (LOB) a XML, ale pouze při připojení k SQL Server 2005 (9.x) (nebo novějším) serverům. To poskytuje vývojářům větší flexibilitu a zároveň zachovává konzistenci a zpětnou kompatibilitu pro stávající aplikace a servery na nižší úrovni. Tato změna ovlivňuje všechna rozhraní, která přenášejí data, předevšímIRowset::GetData,ICommand::Execute, a .IRowsetFastLoad::InsertRow