Aracılığıyla paylaş


FILESTREAM genel bakış

Her gün oluşturulur verilerin çok yapılandırılmamış, metin belgeleri, resimler ve videolar gibi veridir.Yapılandırılmamış bu veriler, kendi yapılandırılmış verilerinden ayrı veritabanı dışında genellikle depolanır.Bu, ayırma, veri yönetim karmaşıklık neden olabilir.Veya, veri yapılandırılmış depolama ile ilişkili ise, dosya, akış özelliklerini ve performans sınırlı olabilir.

FILESTREAM integrates the SQL Server Database Engine with an NTFS file system by storing varbinary(max) binary large object (BLOB) data as files on the file system.Transact-SQL statements can insert, update, query, search, and back up FILESTREAM data.Dosya sistemi arabirimleri, veri akış erişim sağlar.

FILESTREAM NT sistem önbelleği, dosya verilerini önbelleğe alma için kullanır.Bu, FILESTREAM veri olabilecek herhangi bir etkisi azaltılmasına yardımcı olur: Database Engine Performans. The SQL Server arabellek havuzu is not used; therefore, this memory is available for query processing.

Not

Saydam veri şifrelemesini etkin olsa bile FILESTREAM veriler şifrelenmez.

FILESTREAM nasıl kullanıldığını gösterir örneklerde için bkz: FILESTREAM depolama ortamı ile çalışmaya başlama.

FILESTREAM kullanılacağı durumlar

Içinde SQL ServerBLOBs standart olabilir. varbinary(max) Tablo veya FILESTREAM verileri depolayan veri varbinary(max) dosya sisteminde veri depolamak nesneleri. Boyut ve verileri kullanımını, veritabanı depolama ortamı veya dosya sistemi depolama kullanması gerekip gerekmediğini belirler.Aşağıdaki koşullar doğruysa, FILESTREAM kullanarak gözönünde bulundurmalısınız:

  • Depolanmakta, ortalama olarak 1 MB'DEN büyük nesneleridir.

  • Hızlı okuma erişimi önemlidir.

  • Uygulama mantığı için bir orta bağlayıcıda kullanan uygulamalar geliştirmektedir.

Daha küçük nesneleri depolamak için varbinary(max) Veritabanındaki bLOBs genellikle daha iyi akış performans sağlar.

FILESTREAM depolama

FILESTREAM depolama olarak uygulanan bir varbinary(max) sütun, veri dosya sisteminde BLOB'lar depolandığı. BLOB'lar boyutunu, yalnızca birim boyutu, dosya sistemi ile sınırlıdır.Standart varbinary(max) 2 GB dosya boyutu sınırlaması, dosya sisteminde depolanan BLOB'lar için geçerli değildir.

Bir sütunun veri dosya sistemi depolamalısınız belirtmek için , FILESTREAM özniteliğini belirtin bir varbinary(max) sütun. Bu neden Database Engine Bu sütun için tüm veriler, dosya sistemi, ancak veritabanı dosyasında depolamak için .

FILESTREAM veri içinde FILESTREAM dosya gruplarını depolanmalıdır.Dosyaların kendileri yerine dosya sistemi dizinleri içeren özel bir dosya grubu FILESTREAM bir dosya grubu var.Bu dosya sistemi dizinleri yeniden adlandırılır veri kapsayıcılar.Veri kaplardır arasındaki arabirim Database Engine Depolama ve dosya sistemi depolama.

FILESTREAM Depolama Ortamı'nı kullandığınızda, aşağıdakileri göz önünde bulundurun:

  • Bir tablo FILESTREAM sütun içeriyorsa, her satır bir nonnull benzersiz satır KIMLIğINIZ olmalıdır.

  • Veri kapsayıcılar FILESTREAM iç içe olamaz.

  • Küme üstlenme kullanırken FILESTREAM dosya gruplarını paylaşılan disk kaynakları olması gerekir.

  • FILESTREAM dosya gruplarını sıkıştırılmış birimlerde olabilir.

Tümleşik güvenlik

Içinde SQL ServerYalnızca güvenli diğer verilere gibi FILESTREAM verileri güvenlik altına alınır: Tablo veya sütun düzeyi izinleri vererek. Bir kullanıcı, FILESTREAM izne sahipse sütun ilişkili dosyaları bir tabloda, kullanıcının yeniden açabilirsiniz.

Not

Şifreleme, verileri FILESTREAM desteklenmiyor.

Hangi hesabın yalnızca SQL Server Hizmet hesabı çalışır FILESTREAM kapsayıcı için NTFS izinleri verilmiş. Başka bir hesap veri kapsayıcısındaki izinler aracılığıyla verilmesi önerilir.

Tümleşik bir yönetim

FILESTREAM uygulanır, çünkü bir varbinary(max) sütun halinde doğrudan tümleşik ve Database Engine, en çok SQL Server yönetim araçlarını ve fonksiyonlarını, değişiklik yapılmaksızın FILESTREAM veriler için çalışır. Örneğin, tüm yedek ve kurtarma modelleri FILESTREAM verilerle kullanabilirsiniz ve FILESTREAM verileri veritabanı içinde yapılandırılmış olan veri ile yedeklenir.Ilişkisel veri FILESTREAM verileri yedeklemek istiyorsanız, kısmi yedek, FILESTREAM dosya gruplarını dışarıda bırakmak için kullanabilirsiniz.

Access BLOB verileri için çift programlama modeli

Içinde bir FILESTREAM, verileri depoladığınız sonra sütun, kullanarak dosyalara erişebilirsiniz. Transact-SQL hareketleri veya Win32 Apı kullanarak.

Transact-SQL erişim

Kullanarak Transact-SQL, eklemek, güncelleştirme ve FILESTREAM veri silebilirsiniz:

  • Göreceli olarak satır içi veri kısa veya null değer, null bir değer içeren bir FILESTREAM alan önceden doldurmak üzere bir ekleme işlemi'ni kullanabilirsiniz.Ancak, büyük miktarda veri arabirimleri kullanan bir dosyaya daha verimli bir şekilde akışa.

  • FILESTREAM alan güncelleştirdiğinizde, dosya sisteminde temel BLOB verileri değiştirin.FILESTREAM alan NULL olarak ayarlandığında, alanla ilişkili BLOB verileri silinir.Kullanamazsınız bir Transact-SQL UPDATE uygulanan bir yığın halinde güncelleştirme**.** Write(), verilere kısmi güncelleştirme gerçekleştirmek için.

  • Naklettiğinizde satır silmek veya silmek veya kesecek bir tablo FILESTREAM veri içeren, dosya sisteminde temel BLOB verileri silme.

Dosya sistem akış erişimi

Win32 akış destek içeriğinde çalışan bir SQL Server işlem. Bir işlem içinde FILESTREAM işlevleri, bir dosyanın mantıksal bir UNC dosya sistemi yol elde etmek için kullanabilirsiniz.Daha sonra OpenSqlFilestream Bir dosya tanıtıcısı almak için APı'ı tıklatın. Bu tanıtıcı Win32 dosya arabirimleri gibi akış tarafından kullanılabilir ReadFile() ve WriteFile(), dosyayı, dosya sistemi yoluyla güncelleştirmek için.

Dosya işlemleri işlem olduğundan, silemez veya dosya sistemi FILESTREAM dosyalarını yeniden adlandırın.

deyim modeli

Dosya sistemi erişim FILESTREAM modelleri bir Transact-SQL dosyası kullanarak deyim açın ve kapatın. deyim, bir dosya tanıtıcısı açılır ve tanıtıcı kapatıldığında sona erdirir başlatır.Örneğin, bir yazma tanıtıcı bir UPDATE deyim gibi tamamlanmışsa, tablo geçirilir kayıtlı tetikleyicisi SONRA kapalı, tüm olası olduğunda.

Depolama ad alanı

Içinde FILESTREAM, Database Engine BLOB fiziksel dosya sistemi ad alanını denetler. Yeni BIR iç işlev yol Adı, mantıksal UNC sağlar yol, tablodaki her FILESTREAM hücreye karşılık gelen BLOB.Uygulama, bu mantıksal yola Win32 tanıtıcı elde ve normal dosya sistemi arabirimleri kullanarak BLOB verileri üzerinde çalışmak için kullanır.Işlev, FILESTREAM sütunun değeri NULL ise NULL döndürüyor.

Işlem temelli dosya sistem erişimi

Yeni BIR iç işlev get_filestream_transaction_context(), oturum ile ilişkili geçerli hareket temsil eden simgeyi sağlar.Hareket başlatılmış ve henüz iptal kaydedilmiş veya gerekir.Uygulama, bir belirteç tarafından almak, FILESTREAM dosya sistemi akış işlemleri başlatılan bir hareket ile bağlar.Işlev, açıkça başlatıldı durumunda, işlem NULL döndürüyor.

Hareketi tamamlar veya iptal için önce tüm dosya tanıtıcıları kapatılmalıdır.Tanıtıcı işlem kapsam dışında açık bırakılır, tanıtıcı karşı ek okuma başarısız olmasına neden; tanıtıcı karşı ek bir yazma işlemi başarılı olur, ancak gerçek veri değil yazılır, diske.Benzer şekilde, veritabanı veya örneğini Database Engine kapatır tüm açık tanıtıcıları geçersiz kapalı.

Işlem dayanıklılığı

Işlem yapma, bağlı, FILESTREAM ile Database Engine hareket dayanıklılık erişim akış dosya sisteminden değişiklik FILESTREAM BLOB verileri için alan sağlar.

Yalıtım semantik

Yalıtım semantik yönetilir Database Engine hareket izolasyon düzeyleri. Yalnızca okuma için kabul edilen bir yalıtım düzey, dosya sistemi erişimi için desteklenir.Yinelenebilir okuma işlemleri ve ayrıca seri hale getirilebilir ve anlık görüntü isolations, FILESTREAM verileri kullanarak erişildiğinde destekleniyor Transact-SQL. kirli okuma desteklenmiyor.

Dosya sistemi erişim açma işlemleri, herhangi bir kilitlerine beklemezler.Bunun yerine, hareket yalıtım nedeniyle verilere erişemezseniz hemen açma işlemleri başarısız.Açma işlemi yalıtım ihlali nedeniyle devam edemiyor ERROR_SHARING_VIOLATION ile akış API çağrısı başarısız.

Kısmi güncelleştirme

Kısmi güncelleştirme yapılmasına izin vermek için , uygulama açılan tanıtıcı başvuran dosyasına aygıt FS denetimi (eski bir içeriği alıp FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT) verebilir.Bu işlem, sunucu tarafı eski içerik kopyasını tetikler.Daha iyi bir uygulama performansını ve çok büyük dosyalar ile çalışırken, olası saat aşımlarının olarak çalışmasını önlemek için saat uyumsuz g/Ç kullanmanızı öneririz.

Tanıtıcı yazılmış sonra FSCTL yayımlanırsa, son yazma işlemi devam ve tanıtıcısını yapılan önceki yazma kaybolur.

Uzak stemcilerini yazma üzerinden

Sunucu ileti blok (SMB) protokolü üzerinden uzak dosya sistemi erişim FILESTREAM etkin.Uzak istemci ise, hiçbir yazma işlemleri tarafından istemci tarafında önbelleğe alınır.Yazma işlemleri, her zaman sunucuya gönderilir.Verileri, sunucu tarafında önbelleğe alınabilir.Uzaktaki istemciler üzerinde çalışan uygulamalar küçük birleştirmek öneririz daha az yapmak için daha büyük veri boyutu kullanarak işlem yazma yazma.

Bellekle eşlenen görünümleri (bellek eşleştirilmiş g/Ç) FILESTREAM tanıtıcı oluşturma desteklenmiyor.Bellek eşlemesi FILESTREAM verileri için kullanılıyorsa, Database Engine tutarlılığı ve veri dayanıklılık veya veritabanının bütünlüğünü garanti edemez.