Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server in Windows
OLE DB-stuurprogramma downloaden
Vanaf SQL Server 2008 (10.0.x) ondersteunt OLE DB Driver for SQL Server de verbeterde FILESTREAM-functie. Voor voorbeelden, zie FILESTREAM en OLE DB.
FILESTREAM biedt een manier om grote binaire waarden op te slaan en te benaderen, hetzij via SQL Server of via directe toegang tot het Windows-bestandssysteem. Een grote binaire waarde is een waarde groter dan 2 gigabyte (GB). Voor meer informatie over verbeterde FILESTREAM-ondersteuning, zie FILESTREAM (SQL Server).
Wanneer een databaseverbinding wordt geopend, @@TEXTSIZE wordt deze standaard ingesteld op -1 (onbeperkt).
Het is ook mogelijk om FILESTREAM-kolommen te benaderen en bij te werken met behulp van Windows-bestandssysteem-API's.
Voor meer informatie, zie Access FILESTREAM Data met OpenSqlFilestream.
Zoek naar FILESTREAM-kolommen
Schema-rijsets in OLE DB geven niet aan of een kolom een FILESTREAM-kolom is.
ITableDefinition in OLE kan DB niet worden gebruikt om een FILESTREAM-kolom te maken.
Om FILESTREAM-kolommen aan te maken of te detecteren welke bestaande kolommen FILESTREAM-kolommen zijn, kun je de is_filestream kolom van de sys.columns-catalogusweergave gebruiken.
Het volgende script is een voorbeeld:
-- 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 Compatibiliteit
Als je client is gecompileerd met OLE DB Driver voor SQL Server, en de applicatie maakt verbinding met SQL Server 2012 (11.x) en latere versies, dan is varbinary(max)- gedrag compatibel met het gedrag dat wordt geïntroduceerd door SQL Server Native Client in SQL Server 2005 (9.x). Dat wil zeggen, de maximale hoeveelheid teruggegeven data is beperkt tot 2 GB. Voor resultaatwaarden groter dan 2 GB vindt afkap plaats en wordt een waarschuwing "string data right truncation" teruggegeven.
Wanneer datatypecompatibiliteit op 80 is gezet, is clientgedrag consistent met het gedrag van de client lager op niveau.
Voor clients die SQLOLEDB of andere providers gebruiken die vóór SQL Server 2005 (9.x) zijn uitgebracht, wordt varbinary(max) aan image toegewezen.
Comments
Om varbinary(max) -waarden groter dan 2 GB te verzenden en ontvangen, gebruikt
DBTYPE_IUNKNOWNeen applicatie in parameter- en resultaatbindingen. Voor parameters moet de provider IUnknown::QueryInterface aanroepen voor ISequentialStream en voor resultaten die ISequentialStream teruggeven.Voor OLE DB zijn controles gerelateerd aan ISequentialStream-waarden versoepeld. Wanneer wType in de
DBBINDINGstruct zitDBTYPE_IUNKNOWN, kan lengtecontrole worden uitgeschakeld door dwPart weg te latenDBPART_LENGTH, of door de lengte van de data (bij offset obLength in de databuffer) in te stellen op~0. In dit geval controleert de provider niet de lengte van de waarde en vraagt hij alle beschikbare data via de stream op en retourneert ze. Deze wijziging wordt toegepast op alle large object (LOB) types en XML, maar alleen wanneer deze verbonden zijn met SQL Server 2005 (9.x) (of later) servers. Dit biedt meer flexibiliteit voor ontwikkelaars, terwijl consistentie en achterwaartse compatibiliteit behouden blijven voor bestaande applicaties en servers op lagere niveau. Deze wijziging beïnvloedt alle interfaces die data overdragen, voornamelijkIRowset::GetData,ICommand::Execute, enIRowsetFastLoad::InsertRow.