Aracılığıyla paylaş


SQL Server için OLE DB Sürücüsünde FILESTREAM desteği

Şunlar için geçerlidir:Windows üzerinde SQL Server

OLE DB sürücüsünü indirme

SQL Server 2008 (10.0.x) ile itibaren, SQL Server için OLE DB Sürücüsü geliştirilmiş FILESTREAM özelliğini destekler. Örnekler için bkz. FILESTREAM ve OLE DB.

FILESTREAM, SQL Server üzerinden veya Windows dosya sistemine doğrudan erişim yoluyla büyük ikili değerleri depolamak ve erişmek için bir yol sunar. Büyük ikili değer, 2 gigabayttan (GB) büyük bir değerdir. Geliştirilmiş FILESTREAM desteği hakkında daha fazla bilgi için bkz. FILESTREAM (SQL Server).

Bir veritabanı bağlantısı açıldığında, @@TEXTSIZE varsayılan olarak (sınırsız) olarak ayarlanır -1 .

Windows dosya sistemi API'leri kullanılarak FILESTREAM sütunlarına erişmek ve güncellemek de mümkündür.

Daha fazla bilgi için Access FILESTREAM Data with OpenSqlFilestream bkz.

FILESTREAM Sütunları için Sorgu

OLE DB'deki şema satır kümeleri, bir sütunun FILESTREAM sütunu olup olmadığını bildirmez. ITableDefinition OLE DB'de FILESTREAM sütunu oluşturmak için kullanılamaz.

FILESTREAM sütunları oluşturmak veya mevcut sütunların hangi sütunların FILESTREAM sütunu olduğunu tespit etmek için sys.columns katalog görünümünün sütununu kullanabilirsinizis_filestream.

Aşağıdaki senaryo buna örnektir:

-- 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 Uyumluluk

Eğer istemciniz SQL Server için OLE DB Driver kullanılarak derlenmişse ve uygulama SQL Server 2012 (11.x) ve sonraki sürümlere bağlanıyorsa, varbinary(max) davranış, SQL Server 2005 (9.x)'de SQL Server Native Client tarafından getirilen davranışla uyumludur. Yani, geri dönen verinin maksimum boyutu 2 GB ile sınırlıdır. 2 GB'dan büyük sonuç değerleri için kesinti gerçekleşir ve "dizi veri sağ kesintisi" uyarısı döner.

Veri tipi uyumluluğu 80'e ayarlandığında, istemci davranışı aşağıdaki istemci davranışıyla tutarlıdır.

SQL Server 2005 (9.x) öncesinde yayınlanmış SQLOLEDB veya diğer sağlayıcılar kullanan istemciler için, varbinary(max)görüntüye eşlenir.

Comments

  • 2 GB'dan büyük varbinary(max) değerleri göndermek ve almak için bir uygulama DBTYPE_IUNKNOWN parametre ve sonuç bağlamaları kullanır. Parametreler için sağlayıcı, ISequentialStream için IUnknown::QueryInterface ve ISequentialStream döndüren sonuçlar için IUnknown::QueryInterface adresini çağırmalıdır.

  • OLE DB için, ISequentialStream değerleriyle ilgili kontrol gevşettirilir. wType yapıda DBBINDING olduğundaDBTYPE_IUNKNOWN, uzunluk kontrolü dwPart'tan çıkarılarak DBPART_LENGTH veya verinin uzunluğunu (veri tamponunda ofset obLength'de) olarak ~0ayarlayarak devre dışı bırakılabilir. Bu durumda, sağlayıcı değerin uzunluğunu kontrol etmez ve akış üzerinden mevcut tüm verileri talep eder ve geri gönderir. Bu değişiklik, tüm büyük nesne (LOB) türleri ve XML için uygulanır, ancak yalnızca SQL Server 2005 (9.x) (veya daha sonrakı) sunuculara bağlandığında. Bu, geliştiricilere daha fazla esneklik sağlarken, mevcut uygulamalar ve alt seviyedeki sunucular için tutarlılık ve geriye dönük uyumluluğu korur. Bu değişiklik, esas IRowset::GetDataICommand::Executeolarak veri ileten tüm arayüzleri etkiler, ve IRowsetFastLoad::InsertRow.