Aracılığıyla paylaş


Dağıtılmış bölümlenmiş görünümler meta veri görünürlük sorun giderme

Düşük ayrıcalıklı kullanıcı eklemeye çalışırsa, güncelleştirme veya silme veri üzerinden bir dağıtılmış bölümlü görünüm, SQL Server aşağıdaki hata üretir:

Hata 4436 "BİRLİĞİ tüm görüntüleme ' %. * ls' güncelleştirilebilir değil çünkü bir bölümleme sütunu bulundu. "

Bu sorun ne zaman temel tabloların aynı örnek üzerinde var gibi yerel olarak bölümlendirilmiş görünümlerde, etkilemez SQL Server.

Arka Plan

Dağıtılmış sorgular için SQL Server kontrol kısıtlamalarını uzaktan (bağlı) server tablolar üzerindeki sql tanımını okumak mümkün olmalıdırYani bir dağıtılmış sorgu arayan uzak tablo üzerinde denetim, Değiştir, sahipliği veya Görünüm TANIMI izni olması gerekir.Dağıtılmış sorgu arayan izinlerinden biri yoksa, sorgu 4436 hata ile başarısız olur.

Not

Değeri bu izinlerden herhangi bir kullanıcı yoksa, tanımını sütun , sys.check_constraints kullanıcı katalog sorguladığında, null olur.

Hata 4436 çözümlemek için

check kısıtlaması tanımı Arayana görünür hale getirmek için underlies her hedef tablo üzerinde görünüm TANIMI arayan vermek dağıtılmış bölümlü görünüm.

Örneğin, varsayalım Server1 ve Server2 Federasyon sunucuları ve birbiriyle bağlantılı sunucuları olarak tanımlanan.Varsayalım, master.dbo.t1 tüm üyeleri tarafından erişilebilen bölümlenmiş tablo dpv_users veritabanı rolü.Varsayalım, dpv_users tüm kullanıcıların sahip seçme, ekleme, güncelleştirme, içerir ve silme erişimi üzerinden dağıtılmış bölümlü görünüm.

Aşağıdaki kod, her bağlantılı sunucu üzerinde yürütülür.

CREATE TABLE t1(c INT PRIMARY KEY CHECK (...)) ; -- CHECK is different on each server.
GO

GRANT SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION ON t1 TO dpv_users ;
GO

CREATE VIEW the_dpv AS
    SELECT * FROM Server1.master.dbo.t1
    UNION ALL
    SELECT * FROM Server2.master.dbo.t1 
GO