Görünümler bölümlenmiş dağıtılmış oluşturma

Bölümlenmiş görünümün uygulamadan önce tablo yatay olarak ilk bölüm gerekir.Bölümleme şemasını tasarlarken, onu hangi verilerin her üyeye ait açık olmalıdır tablo.Özgün tablo birkaç küçük üye tabloları ile değiştirilir.Her üye tablo özgün tabloyu aynı sayıda sütun varsa ve her sütunun karşılık gelen sütun aynı niteliklere özgün tablodaki veri türünü, boyutunu ve harmanlama gibi.Dağıtılmış bölümlenmiş bir görünüm, her üyenin oluşturuyorsanız, tablo üzerinde ayrı bir üye sunucu olan.Gerekli olmamasına karşın en yüksek konum saydamlık için üye veritabanı adını her üye sunucu üzerindeki aynı olması gerekir.Örneğin: Server1.CustomerDB, Server2.CustomerDB, Server3.CustomerDB.

Üye tabloları oluşturma

Böylece her tablo bir anahtar değerleri aralık esas alarak özgün tablonun yatay bir dilim depolar üye tabloları tasarlama.Aralıkları veri değerleri esas alan bir bölümleme sütunu.Her üye değerleri aralıknı tablo bölümleme sütuna bir denetim kısıtlaması tarafından zorlanır ve aralıkları örtüşemez.Örneğin, bir tablo içeren olamaz bir aralık ile 1 200000 ve başka bir aralık açık olmayacaktır çünkü 300000 aracılığıyla 150000 hangi tablo 150000 200000 aracılığıyla gelen değerler içerir.

Bölümleme gibi bir Müşteri üç tablo içine tablo.Bu tablolar için check kısıtlaması aşağıda verilmiştir:

-- On Server1:
CREATE TABLE Customers_33
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 1 AND 32999),
  ... -- Additional column definitions)

-- On Server2:
CREATE TABLE Customers_66
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 33000 AND 65999),
  ... -- Additional column definitions)

-- On Server3:
CREATE TABLE Customers_99
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 66000 AND 99999),
  ... -- Additional column definitions)

Dağıtılmış bölüm görünümler tanımlama

Üye tabloları oluşturduktan sonra tanımladığınız bir dağıtılmış bölümlü görünüm her üye sunucudaki her görünümü ile aynı ada sahip.Bu başvuru sorguları sağlar dağıtılmış bölümlü görünüm adı aşağıdakilerden birini veya birkaçını üye sunucular üzerinde çalıştırmak için.Özgün tablonun bir kopyasını her üye sunucudaki olsa da, her sunucunun yalnızca bir üye tablo vardır gibi ve sistem çalışır dağıtılmış bölümlü görünüm.Verilerin konumunu uygulamaya saydamdır.

Aşağıdaki görevleri gerçekleştirerek dağıtılmış bölümlenmiş görünümler oluşturun:

  • Bağlantılı sunucu tanımlarını her üye sunucudaki diğer üye sunucuları dağıtılmış sorgular çalıştırmak için gereken bağlantı bilgilerini içeren ekleniyor.Böylece bir dağıtılmış bölümlü görünüm verileri diğer sunuculara erişimi.

  • Ayar yavaş şema doğrulama seçeneğini kullanarak sp_serveroption, dağıtılmış bölümlenmiş görünümler içinde kullanılan her bir bağlantılı sunucu tanımı için.Sorgu işlemci istek bağlantılı herhangi biri için meta veriler sağlayarak bu performansı optimize eder tabloveri gerçekten uzak üyeden gerekinceye kadar s tablo.

  • Oluşturma bir dağıtılmış bölümlü görünüm her üye sunucudaki.Görünümler bağlı üye sunuculardan veri erişim için select deyimleri dağıtılmış ve yerel üye'den satırlar dağıtılmış satırlarla birleştirir tablo.

Önceki örneğin dağıtılmış bölümlenmiş görünümler oluşturmak için aşağıdakileri yapmalısınız:

  • Adlı bir bağlantılı sunucu tanımı eklemek Server2 ile bağlantı bilgilerini Server2ve adlı bir bağlantılı sunucu tanımı Server3 erişmek için Server3.

  • Aşağıdaki oluşturmak dağıtılmış bölümlü görünüm:

    CREATE VIEW Customers AS
       SELECT * FROM CompanyDatabase.TableOwner.Customers_33
    UNION ALL
       SELECT * FROM Server2.CompanyDatabase.TableOwner.Customers_66
    UNION ALL
       SELECT * FROM Server3.CompanyDatabase.TableOwner.Customers_99
    
  • Aynı adımları gerçekleştirmesi Server2 ve Server3.

Tablo kuralları

Üye tabloları her seçin from yan tümce tümce tümcesinde tanımlanan deyim görünüm tanımındaki.Her üye tablo aşağıdaki kurallara uyması gerekir:

  • Üye tabloları olamaz başvuru birden çok saat görünümünde.

  • Üye tabloları tüm hesaplanan sütunlar üzerinde oluşturulan dizinler olamaz.

  • Üye tabloları tüm PRIMARY key kısıtlamaları aynı sayıda sütun üzerinde olması gerekir.

  • Üye tabloları aynı ANSI doldurma ayarı olmalıdır.ANSI doldurma ayarı hakkında daha fazla bilgi için bkz: ansi_padding set.

Sütun kuralları

Her seçim seçim listesinde sütun tanımlanan deyim görünüm tanımındaki.Her sütun aşağıdaki kurallara uyması gerekir:

  • Her üyenin tüm sütunlarda tablo seçim listesinde dahil edilmesi.SEÇİN * from <üye tablo> olduğu kabul edilebilir sözdizimi.

  • Sütunları olamaz başvuru birden çok saat listesinde seçin.

  • Sütunları seçme listesinde sıra aynı konumda olması gerekir

  • Sütunları seçme listesinde her seçin, deyim aynı türde olması gerekir.Bu veri türü, duyarlık, ölçek ve harmanlama içerir.Örneğin, aşağıdaki çünkü tanım hataları görüntülemek ilk sütun hem de SELECT deyimleri aynı veri türüne sahip değil:

    CREATE VIEW NonUpdatable
    AS
    SELECT IntPrimaryKey, IntPartNmbr
    FROM FirstTable
      UNION ALL
    SELECT NumericPrimaryKey, IntPartNmbr
    FROM SecondTable
    

Sütun kuralları bölümleme

Tek bir sütun bölümleme için kullanılabilir ve her üye üzerinde bulunması gerekir tablo.DENETLEME kısıtlamaları tanımlamak her üye verileri tablo.Aşağıdaki ek kurallar uygulanır:

  • Kontrol kısıtlamaları her tablodaki anahtar aralıkları ile herhangi bir tablo aralıklarını gelemez.Bölümleme sütununda belirli bir değeri yalnızca bir eşleştirmeniz gerekir tablo.Denetim kısıtlamalarını yalnızca bu işleçler kullanabilirsiniz: BETWEEN, IN, AND, OR, <, <=, >, >=, =.

  • bölümleme sütunu bir kimlik, varsayılan olamaz veya zaman damgası sütun.

  • bölümleme sütunu aynı sıralı konumunu Seç listesinde her bir deyim görünümünde olmanız gerekir.Örneğin, bölümleme sütunu her zaman ilk iş sütun her seçim listesi veya ikinci sütun her liste seçin ve benzeri.

  • bölümleme sütunu için boş değerlere izin veremez.

  • bölümleme sütunu bir parçası olmalıdır birincil anahtar tablo.

  • bölümleme sütunu hesaplanan sütun olamaz.

  • Üzerinde tek bir kısıtlama olmalıdır bölümleme sütunu.Birden fazla kısıtlama ise SQL Server tüm kısıtlamalar dikkate almaz ve değil düşünün onları zaman belirliyor olup olmadığını görünümünde bölümlenmiş bir görünüm.

  • Kısıtlama yoktur güncelleştirilebilme üzerinde bölümleme sütunu.

Bu kurallara uyan bir bölümleme sütunuunda tarafından desteklenen tüm iyileştirmeleri destekler sorgu iyileştiricisi.Daha fazla bilgi için bkz: Dağıtılmış bölümlenmiş görünümler çözme.

Genel Kurallar

Not

Aşağıdaki koşullar aynı sunucu üzerinde oluşturulan yerel olarak bölümlenmiş görünümler için geçerli değildir.Bu, geriye doğru uyumluluk amacıyla bulunan bir özelliktir.

Göz önüne almanız gereken bazı ek kurallar şunlardır:

  • A dağıtılmış bölümlü görünüm DIŞINDAKİLER kullanılarak oluşturulmuş olamaz veya işleçleri KESİŞEN.

  • dağıtılmış işlem güncelleştirmesi tarafından etkilenen tüm düğümler arasında Atom oranı garantilemek için başlatılır.

  • xact_abort küme seçenek on olarak küme olması gerekir.

  • Smallmoney ve smalldatetime olarak uzak tablolardaki sütunları eşlenen para ve datetime sırasıyla.Bu nedenle, yerel tablolarda karşılık gelen sütunları da olmalıdır para ve datetime.

  • Bağlantılı bir sunucu bir geridöngü bağlantılı sunucu olamaz.Bu işaret için aynı bağlantılı sunucu, örnek , SQL Server.

Bu kurallara olmadan bölümlenmiş tabloları görüntülenmeye başvuruları INSTEAD of ise güncelleştirilebilir bir görünüm görünüm üzerinde tetikler.Ancak, sorgu iyileştiricisi her zaman tüm kurallara bölümlenmiş bir görünüm planlarını olabildiğince verimli bir INSTEAD of tetikleyicisi ile bir görünüm için yürütme planları oluşturmak mümkün olmayabilir.