Diğer SQL Server özellikleriyle FileTable uyumluluğu

Şunlar için geçerlidir: SQL Server

FileTable'ların SQL Server'ın diğer özellikleriyle nasıl çalıştığını açıklar.

Always On bağlamındaki kullanılabilirlik grupları ve FileTable'lar

FILESTREAM veya FileTable verileri içeren veritabanı Always On kullanılabilirlik grubuna ait olduğunda:

  • FileTable işlevselliği Always On kullanılabilirlik grupları tarafından kısmen desteklenir. Yük devretme işleminden sonra FileTable verilerine birincil çoğaltmadan erişilebilir, ancak okunabilir ikincil çoğaltmalarda FileTable verilerine erişilemez.

    Uyarı

    Yük devretme sonrasında tüm FILESTREAM işlevleri desteklenir. FILESTREAM verilerine hem okunabilir ikincil çoğaltmalarda hem de yeni birincil çoğaltmada erişilebilir.

  • FILESTREAM ve FileTable işlevleri, bilgisayar adları yerine sanal ağ adlarını (VNN) kabul eder veya döndürür. Bu işlevler hakkında daha fazla bilgi için bkz. FILESTREAM ve FileTable İşlevleri (Transact-SQL).

  • Dosya sistemi API'leri aracılığıyla FILESTREAM veya FileTable verilerine tüm erişim, bilgisayar adları yerine VNN'leri kullanmalıdır. Daha fazla bilgi için bkz. Always On kullanılabilirlik gruplarıyla FILESTREAM ve FileTable kullanma.

Partition ve FileTables

FileTable'larda bölümleme desteklenmez. Birden fazla FILESTREAM dosya grubu desteğiyle, çoğu senaryoda (SQL Server 2008 FILESTREAM'in aksine) tamamen ölçeklendirme sorunları bölümleme gerekmeden çözülebilir.

Çoğaltma ve FileTable'lar

FileTable'larda çoğaltma ve ilgili özellikler (işlem çoğaltması, birleştirme çoğaltması, değişiklik verisi yakalama ve değişiklik izleme dahil) desteklenmez.

İşlem semantiği ve FileTables

Windows uygulamaları

Windows uygulamaları veritabanı işlemlerini anlamadığından, Windows yazma işlemleri bir veritabanı işleminin ACID özelliklerini sağlamaz. Bu nedenle işlem geri alma ve kurtarma işlemleri Windows güncelleştirme işlemleriyle mümkün değildir.

Transact-SQL uygulamaları

FileTable'daki FILESTREAM (file_stream) sütununda çalışan Transact-SQL uygulamalar için yalıtım semantiği, normal bir kullanıcı tablosundaki FILESTREAM veri türüyle aynıdır.

Sorgu bildirimleri ve FileTable'lar

Sorgu, FileTable'da, WHERE yan tümcesinde veya sorgunun başka bir bölümünde FILESTREAM sütununa başvuru içeremez.

SELECT INTO ve FileTables

FileTable'daki SELECT INTO deyimleri, oluşturulan hedef tablodaki FileTable semantiğini yaymaz (normal tablodaki FILESTREAM sütunları gibi). Tüm hedef tablo sütunları normal sütunlar gibi davranır. Bunlarla ilişkilendirilmiş FileTable semantiği yoktur.

Tetikleyiciler ve FileTable'lar

DDL (Veri Tanımı Dili) tetikleyicileri

FileTable'larla DDL tetikleyicileri için dikkat edilmesi gereken özel bir nokta yoktur. Normal DDL tetikleyicileri, CREATE/ALTER DATABASE işlemlerinin yanı sıra FileTable'lar için CREATE/ALTER TABLE işlemlerinde de çalışır. Tetikleyiciler, EVENTDATA() işlevini çağırarak DDL komut metnini ve diğer bilgileri içeren gerçek olay verilerini alabilir. Mevcut Eventdata şemasında yeni olay veya değişiklik yok.

DML (Veri İşleme Dili) tetikleyicileri

Bu kısıtlamalar, tetikleyici oluşturmak için DDL işlemi sırasında uygulanır.

  • FileTables DML işlemleri için INSTEAD OF tetikleyicilerini desteklemez. Bu, FILESTREAM sütunları içeren tüm tablolarda mevcut bir kısıtlamadır.

  • FileTable'lar DML işlemleri için AFTER tetikleyicilerini destekler.

  • FileTable'da tanımlanan tetikleyiciler hiçbir FileTable'ı (üst FileTable dahil) güncelleştiremez. Bu kısıtlama temel olarak bir tetikleyicinin aynı işlemdeki dosya sistemi erişimi tarafından tutulan kilitlerle kilitlenme çakışmalarına girmesini önlemek için vardır.

İşlem dışı erişim ve tetikleyiciler üzerindeki etkileri

  • Veritabanında işlemsel olmayan güncelleştirme erişimine izin verildiğinde, bu veritabanındaki FileTable da dahil olmak üzere herhangi bir tablodaki FILESTREAM verilerini yerinde güncelleştirmek mümkündür. Bu olasılık nedeniyle FILESTREAM içeriğinin önceki görüntüsü tetikleyici tarafından kullanılamayabilir.

  • Dosya sistemi aracılığıyla yapılan işlem dışı güncelleştirme işlemleri için SQL Server, CloseHandle işlemini yakalamak için bir iç işlem oluşturur ve tanımlı DML tetikleyicileri bu işlemin bir parçası olarak tetiklenebilir. Tetikleyici gövdesi içinde böyle bir işlemin geri alınması engellenmese de FILESTREAM'da yapılan değişiklikleri geri almaz. Bu tür bir geri alma işlemi, FILESTREAM içeriği değiştirilmiş olsa bile Güncelleştirme tetikleyicilerinin tetiklenmesini de engelleyebilir.

  • Bu etkilere ek olarak, FileTable'lardaki tetikleyicilerin birkaç ek davranışla da ilgilenmesi gerekir

    • Dosya sistemi aracılığıyla FileTable'da işlemsel olmayan güncelleştirme işlemleriyle, FILESTREAM içeriği yalnızca diğer Win32 işlemleri tarafından kilitlenebilir ve tetikleyici gövdesi aracılığıyla okuma/yazma için erişilebilir olmayabilir. Böyle durumlarda, tetikleyici gövdesindeki FILESTREAM içeriğine erişme girişimi "Paylaşım İhlali" hatası verebilir. Tetikleyiciler bu tür hataları uygun şekilde işleyecek şekilde tasarlanmalıdır.

    • BAZı durumlarda diğer işlemsel olmayan güncelleştirmeler tarafından aynı anda (dosya sistemi erişiminde izin verilen paylaşım modlarından dolayı) aktif olarak yazılıyor olabileceğinden, FILESTREAM'ın AFTER görüntüsü kararlı olmayabilir.

  • Win32 tanıtıcılarının bir yönetici tarafından açıkça sonlandırılması veya bir veritabanı çökmesi gibi olaylarla Win32 tanıtıcılarının anormal şekilde sonlandırılması, anormal şekilde sonlandırılan Win32 uygulaması tarafından FILESTREAM içeriği değiştirilmiş olsa bile, kurtarma işlemleri sırasında kullanıcı tetikleyicilerini yürütmez.

Görünümler ve FileTable'lar

İzlenimler

Diğer tablolarda olduğu gibi bir FileTable'da da görünüm oluşturulabilir. Bununla birlikte, fileTable'da oluşturulan bir görünüm için aşağıdaki noktalar geçerlidir:

  • Görünümlerde FileTable semantiği olamaz. Başka bir ifadeyle, görünümdeki sütunlar (dosya özniteliği sütunları dahil) herhangi bir özel semantiği olmayan normal görünüm sütunları gibi davranır ve Dosyalar/dizinleri temsil eden satırlar için de aynı durum geçerlidir.

  • Görünümler "güncelleştirilebilir görünüm" semantiğine göre güncelleştirilebilir olabilir, ancak temel alınan tablo kısıtlamaları aynı tablodaki gibi güncelleştirmeleri reddedebilir.

  • Bir dosyanın dosya yolu, görünümde açık bir sütun olarak eklenerek görünümde görselleştirilebilir. Örneğin:

    CREATE VIEW MP3FILES AS SELECT column1, column2, ..., GetFileNamespacePath() AS PATH, column3,... FROM Documents

İndekslenmiş görünümler

Şu anda dizine alınmış görünümler FILESTREAM sütunlarını veya FILESTREAM sütunlarına bağlı hesaplanan veya kalıcı hesaplanan sütunları içeremez. Bu davranış, FileTable'da da tanımlanan görünümlerle değişmeden kalır.

Anlık görüntü yalıtımı ve FileTable'lar

Okunmuş Onaylı Anlık Görüntü Yalıtımı (RCSI) ve Anlık Görüntü Yalıtımı (SI), veriler üzerinde güncelleme işlemleri gerçekleşirken bile, okuyucuların kullanabileceği bir veri anlık görüntüsünün oluşturulmasına dayanır. Ancak FileTable'lar, Dosya Akışı verilerine işlem dışı yazma erişimi sağlar. Sonuç olarak, FileTable içeren veritabanlarındaki bu özellikler için aşağıdaki kısıtlamalar geçerlidir:

  • RCSI/SI'yi etkinleştirmek için FileTable içeren bir veritabanı değiştirilebilir.

  • veritabanı için non_transactional erişimi FULL olarak ayarlandığında RCSI veya SI altında çalışan bir işlem aşağıdaki davranışa sahiptir:

    • FileTable file_stream sütununun Transact-SQL okuması başarısız olur. INSERT ve UPDATE ile sütuna yönelik işlemler, file_stream sütunundan okumadıkları sürece yine de başarılı olur.

    • Transact-SQL deyimi READCOMMITTEDLOCK tablo ipuçlarını belirtiyorsa, okuma başarılı olur ve satır sürüm oluşturma yerine satırları kilitler.

    • İşlem yapılan Win32 FileStream açma istekleri de başarısız olur.

    • İşlemsiz FileTable Win32 erişimi başarılı olur. FileTable tarafından yapılan tüm iç sorgular etkilenmez.

    • Tam metin dizin oluşturma, veritabanı seçenekleri ne olursa olsun (READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION) her zaman başarılı olur.

Okunabilir ikincil veritabanları

Yukarıdaki Snapshot Isolation ve FileTables bölümünde açıklandığı gibi, anlık görüntülerde olduğu gibi okunabilir ikincil veritabanları için de dikkat edilmesi gerekenler geçerlidir.

Kapsanan veritabanları ve FileTable'lar

FileTable özelliğinin bağımlı olduğu FILESTREAM özelliği, veritabanının dışında bir yapılandırma gerektirir. Bu nedenle, FILESTREAM veya FileTable kullanan bir veritabanı tam anlamıyla kendi içinde bulunmaz.

Kapsanan veritabanlarının kapsanan kullanıcılar gibi belirli özelliklerini kullanmak istiyorsanız, veritabanı kapsamasını PARTIAL olarak ayarlayabilirsiniz. Ancak bu durumda, veritabanı ayarlarından bazıları veritabanında bulunmaz ve veritabanı taşındığında otomatik olarak taşınmaz.