FILESTREAM (SQL Server)

FILESTREAM etkinleştirir SQL Server-tabanlı uygulamalar dosya sisteminde belgeleri ve resimleri gibi yapılandırılmamış verileri depolamak için. Uygulamalar API akış zengin yararlanabilirim ve performansı dosya sistemi ve aynı zamanda yapılandırılmamış veriler ile ilgili yapısal veri arasındaki işlem tutarlılığı korumak.

FILESTREAM entegre SQL Server Veritabanı Altyapısıile bir ntfs dosya sistemi depolayarak varbinary(max)büyük ikili nesne (blob) veri dosyaları dosya sistemindeki. Transact-SQLdeyimleri ekleme, güncelleme, sorgulamak, arama ve FILESTREAM verileri yedekleyin. Win32 dosya sistemi arabirimi, veri akış erişimi sağlar.

FILESTREAM dosya verileri önbelleğe almak için nt sistem önbelleği kullanır. Bu FILESTREAM veri olabilir herhangi bir etkisini azaltmak yardımcı Veritabanı Altyapısıperformans. SQL ServerArabellek havuzu kullanılmaz; Bu nedenle, bu bellek sorgu işleme için kullanılabilir.

FILESTREAM otomatik olarak etkin yüklediğinizde veya yükselttiğinizde SQL Server. SQL Server Yapılandırma Yöneticisi'ni kullanarak FILESTREAM etkinleştirmek gerekir ve SQL Server Management Studio. FILESTREAM kullanmak için Oluştur veya özel türde bir filegroup içeren bir veritabanını değiştirmek gerekir. Daha sonra oluşturabilir veya bunu içeren bir tabloyu değiştirmek bir varbinary(max)sütun FILESTREAM özniteliğine. Bu görevleri tamamladığınızda, sen-ebilmek kullanma Transact-SQLve FILESTREAM veri yönetmek için Win32.

Yükleme ve FILESTREAM kullanma hakkında daha fazla bilgi için bkz: listesini İlgili görevleri.

Bu Konuda

  • FILESTREAM kullanmak ne zaman

  • FILESTREAM depolama

  • blob veri Transact-SQL ve akış erişim dosya sistemine erişim

  • ilişkili Görevler

  • İlişkili İçerik

FILESTREAM kullanmak ne zaman

De SQL Server, BLOB standart olabilir varbinary(max)tabloları veya FILESTREAM veri depolayan veri varbinary(max)Dosya sistemi verileri depolamak nesneleri. Veri kullanımı ve boyutu, veritabanı depolama veya dosya sistemi depolama kullanıp kullanmayacağınızı belirler. Aşağıdaki koşullar doğruysa, FILESTREAM kullanmayı düşünmelisiniz:

  • Depolanmış olan, ortalama olarak 1 MB'den büyük nesneleridir.

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

  • Orta Katman uygulama mantığını kullanan uygulamalar geliştiriyoruz.

Küçük nesneleri depolamak, varbinary(max)veritabanında BLOB'lar genellikle daha iyi akış performansı sağlar.

[YUKARI]

FILESTREAM depolama

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

Sütun dosya sisteminde veri depolamanız gerekir belirtmek için FILESTREAM öznitelik belirtin bir varbinary(max)sütun. Bu neden Veritabanı Altyapısıdosya sisteminde, ancak veritabanı dosyasında ilgili sütun için tüm verileri depolamak için.

FILESTREAM veri FILESTREAM filegroups depolanmalıdır. FILESTREAM filegroup dosyaların kendileri yerine dosya sistemi dizinleri içeren özel bir filegroup olur. Bu dosya sistemi dizin adı verilen veri kapsayıcıları. Veri kaplardır arasındaki arabirim Veritabanı Altyapısıdepolama ve dosya sistemi depolama.

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

  • Tablo FILESTREAM sütun içeriyorsa, her satır bir nonnull benzersiz satır tanımlayıcısı olmalıdır.

  • Birden çok veri kapsayıcıları için FILESTREAM filegroup eklenebilir.

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

  • Yük Devretme Kümelemesi kullanırken, FILESTREAM filegroups paylaşılan disk kaynakları olması gerekir.

  • FILESTREAM filegroups sıkıştırılmış birimler olabilir.

Entegre yönetimi

Çünkü FILESTREAM olarak uygulanan bir varbinary(max)sütun ve doğrudan entegre Veritabanı Altyapısı, en SQL Serveryönetimi araçları ve işlevleri için FILESTREAM veri yapılmaksızın çalışma. Örneğin, sen-ebilmek kullanma tüm yedekleme ve kurtarma modelleri FILESTREAM verilerle ve FILESTREAM veri veritabanı yapılandırılmış veriler yedeklenir. FILESTREAM veri ilişkisel veri yedeklemek istemiyorsanız, FILESTREAM filegroups dışlamak için kısmi bir yedekleme kullanabilirsiniz.

[YUKARI]

Tümleşik güvenlik

İçinde SQL Server, sadece diğer veri güvenliği sağlanmış gibi FILESTREAM verilere güvenlidir: Tablo veya sütun düzeyinde izinleri verme ile. Kullanıcı tablo FILESTREAM sütun izni varsa, kullanıcı ilişkili dosyaları açabilirsiniz.

[!NOT]

FILESTREAM veri şifrelemeyi desteklemiyor.

Yalnızca hesabın hangi SQL Serverhizmet hesabı çalışır FILESTREAM kapsayıcı ntfs izinleri verilir. Başka bir hesap verilerini kapsayıcısındaki izinler verilmiş olması önerilir.

[!NOT]

sql oturum açma FILESTREAM kapsayıcı ile çalışmaz. Yalnızca ntfs kimlik FILESTREAM kapsayıcı ile çalışır.

blob veri Transact-SQL ve akış erişim dosya sistemine erişim

FILESTREAM sütun veri depolamak sonra dosyaları kullanarak erişebileceğiniz Transact-SQLhareketleri veya Win32 API kullanarak.

Transact-sql erişim

Kullanarak Transact-SQL, ekleme, güncelleştirme ve FILESTREAM veri silin:

  • Nispeten kısa satır içi veri ya da ekleme işlemi bir FILESTREAM alanı boş değer, boş değer içeren önceden doldurmak için kullanın. Ancak, büyük miktarda veri Win32 arabirimleri kullanan bir dosya daha verimli bir şekilde akışla gönderilir.

  • FILESTREAM alanı güncelleştirdiğinizde, dosya sisteminde temel blob verileri değiştirin. FILESTREAM alan null olarak ayarlanır alanıyla ilişkili blob verileri silinir. Sen cant'kullanma a Transact-SQLyığın güncelleştirme, güncelleştirme olarak uygulanan**.**Verilere kısmi güncelleştirmeler gerçekleştirmek için Write(),.

  • Bir satır silmek veya silmek veya FILESTREAM veri içeren bir tablo kesecek dosya sisteminde temel blob verileri silin.

Dosya sistemi erişim akışı

Win32 akış desteği kapsamında çalışan bir SQL Serverişlem. Bir hareket içinde bir dosyanın mantıksal bir unc dosya sistemi yolunu almak için FILESTREAM işlevlerini kullanabilirsiniz. Daha sonra OpenSqlFilestreambir tanıtıcı elde etmek için API. Bu sonra arabirimleri gibi akış Win32 dosya tarafından kullanılan **ReadFile()**ve WriteFile(), erişim ve dosya sistemi tarafından dosyasını güncelleştirmek için.

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

Deyimi modeli

FILESTREAM dosya sistemi erişim modelleri bir Transact-SQLdosyasını aç ve Kapat kullanarak deyimi. Deyimi tanıtıcı açıldığında ve kolu kapalı olduğunda biter başlar. Örneğin, yazma tanıtıcı bir update deyimi olarak tamamlanırsa, tablo yangınları kayıtlı tetikleyici sonra kapalı, her mümkün olduğunda.

Depolama Namespace

FILESTREAM, de Veritabanı Altyapısıblob fiziksel dosya sistemi ad alanını denetler. Yeni bir iç işlev yol, her tablo FILESTREAM hücreye karşılık gelen damla mantıksal unc yolunu sağlar. Uygulama, Win32 işleyicisi edinip düzenli Win32 dosya sistemi arabirimlerini kullanarak blob veri çalışması bu mantıksal yolu kullanır. İşlev, FILESTREAM sütun değeri null ise null döndürür.

İşlem temelli dosya sistem erişimi

Yeni bir iç işlev GET_FILESTREAM_TRANSACTION_CONTEXT(), oturum ile ilişkili geçerli hareket temsil eden simge sağlar. Hareket başladı ve henüz iptal taahhüt veya gerekir. Belirteç edinerek, uygulama FILESTREAM dosya sistemi akış işlemleri başlamış bir hareketiyle bağlar. İşlev, açıkça başlamış hiçbir hareket halinde için null döndürüyor.

Hareketi tamamlar veya iptal eder ö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 hatası neden olur; ek yazma ele karşı başarılı olur, ancak gerçek veri değil yazılır disk. Benzer şekilde, eğer veritabanı veya örneğini Veritabanı Altyapısıkapamak aşağı, tüm açık işleyicileri geçersiz.

İşlem dayanıklılık

Üzerine hareket kaydetme, FILESTREAM ile Veritabanı AltyapısıAkış erişim dosya sisteminden değiştirilmiş FILESTREAM blob verileri için hareket dayanıklılığı sağlar.

Yalıtım semantiği

Yalıtım semantiği yönetilir Veritabanı Altyapısıhareket izolasyon düzeyleri. Okuma kaydedilmiş yalıtım düzeyi için desteklenen Transact-SQLve dosya sistemi erişimi. Yinelenebilir okuma işlemleri hem de seri hale getirilebilir ve snapshot izolasyonların desteklenir. Kirli okuma desteklenmiyor.

Dosya sistemi erişimi açma işlemleri için kilitleri beklemeyin. Bunun yerine, hareket yalıtım nedeniyle verilere erişemezseniz açma işlemleri hemen başarısız. Akış API çağrısı ERROR_SHARING_VIOLATION ile başarısız açma işlemi yalıtım ihlali nedeniyle devam edemiyor.

Yapılan kısmi güncelleştirmeleri izin, uygulama bir aygıt fs kontrol (FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT) eski içeriği almak için açılan tanıtıcı başvuru dosyasına verebilir. Bu sunucu tarafı eski içerik kopya tetikler. İyi uygulama performansı ve çok büyük dosyalar ile çalışırken çalışan potansiyel zaman aşımlarının içine önlemek için zaman uyumsuz g/Ç kullanmak öneririz.

fsctl tutamacı için yazılmış sonra yayımlanırsa son yazma işlemi inat ve tanıtıcı yapılan önceki yazma kaybolur.

Dosya sistemi API'leri ve desteklenen yalıtım düzeyleri

Bir dosya sistemi API yalıtım ihlali nedeniyle dosya açılamıyor, ERROR_SHARING_VIOLATION istisna döndürülür. İki hareketi aynı dosyaya erişmeye çalıştığınızda bu yalıtım ihlali oluşur. Erişim işlemi dosya içinde açılmış modu ve sürümü bağlı SQL Serverişlem çalıştığı. Aşağıdaki tablo ana hatlarıyla muhtemelen aynı dosyaya erişen iki hareketi için sonuçlar.

İşlem 1

İşlem 2

SQL Server 2008 üzerinde sonuç

Sonucu üzerinde SQL Server 2008 ve sonraki sürümleri

Okuma için Aç.

Okuma için Aç.

İkisi de başarılı.

İkisi de başarılı.

Okuma için Aç.

Yazma için Aç.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi içinde gerçekleştirilen okuma işlemlerinin etkilemez.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi içinde gerçekleştirilen okuma işlemlerinin etkilemez.

Yazma için Aç.

Okuma için Aç.

Açık hareket 2 ERROR_SHARING_VIOLATION istisna ile başarısız olur.

İkisi de başarılı.

Yazma için Aç.

Yazma için Aç.

Açık hareket 2 ERROR_SHARING_VIOLATION istisna ile başarısız olur.

Açık hareket 2 ERROR_SHARING_VIOLATION istisna ile başarısız olur.

Okuma için Aç.

select için açıktır.

İkisi de başarılı.

İkisi de başarılı.

Okuma için Aç.

update veya delete için açıktır.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi içinde gerçekleştirilen okuma işlemlerinin etkilemez.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi içinde gerçekleştirilen okuma işlemlerinin etkilemez.

Yazma için Aç.

select için açıktır.

İşlem 1 hareketi tamamlar veya işlem biter ya da işlem kilidi zaman aşımına kadar 2 blok.

İkisi de başarılı.

Yazma için Aç.

update veya delete için açıktır.

İşlem 1 hareketi tamamlar veya işlem biter ya da işlem kilidi zaman aşımına kadar 2 blok.

İşlem 1 hareketi tamamlar veya işlem biter ya da işlem kilidi zaman aşımına kadar 2 blok.

select için açıktır.

Okuma için Aç.

İkisi de başarılı.

İkisi de başarılı.

select için açıktır.

Yazma için Aç.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi etkilemez.

İkisi de başarılı. Yazma işlemleri altında hareket 2 1 hareketi etkilemez.

update veya delete için açıktır.

Okuma için Aç.

İşlem 2 açma işleminde ERROR_SHARING_VIOLATION istisna ile başarısız olur.

İkisi de başarılı.

update veya delete için açıktır.

Yazma için Aç.

İşlem 2 açma işleminde ERROR_SHARING_VIOLATION istisna ile başarısız olur.

İşlem 2 açma işleminde ERROR_SHARING_VIOLATION istisna ile başarısız olur.

Yinelenebilir okuma açık için seçin.

Okuma için Aç.

İkisi de başarılı.

İkisi de başarılı.

Yinelenebilir okuma açık için seçin.

Yazma için Aç.

İşlem 2 açma işleminde ERROR_SHARING_VIOLATION istisna ile başarısız olur.

İşlem 2 açma işleminde ERROR_SHARING_VIOLATION istisna ile başarısız olur.

Uzak istemcilere yazma aracılığıyla

Uzak dosya sistemi erişim FILESTREAM veri üzerinden sunucu ileti bloğu (smb) protokolü etkinleştirilir. İstemci uzak ise, hiçbir yazma işlemleri ile istemci tarafında önbelleğe alınır. Yazma işlemleri her zaman sunucuya gönderilir. Verileri sunucu tarafında önbelleğe alınabilir. Uzak istemciler üzerinde çalışan uygulamalar küçük birleştirmek öneririz daha büyük veri boyutu kullanarak işlem yazma işlemi daha az yapmak için yazmak.

FILESTREAM tutamacı (bellek eşleştirilmiş g/Ç) bellek eşlemeli görünümler oluşturma desteklenmiyor. Bellek eşleme FILESTREAM veri için kullanılırsa, Veritabanı Altyapısıtutarlılık ve dayanıklılık veri veya veritabanı bütünlüğünü garanti edemez.

[YUKARI]

ilişkili Görevler

[YUKARI]

İlişkili İçerik