Aracılığıyla paylaş


Meta veriler görünürlük dağıtılmış, bölümlenmiş görünümler, sorun giderme

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

Hata 4436 "UNION ALL görüntülemek ' %. * ls bir bölümleme sütun bulunamadığından güncelleştirilemez."

Bu sorun, altındaki tüm tablolar, üzerinde aynı örnek var gibi yerel olarak bölümlendirilmiş görünüm etkilemez. SQL Server.

Arka Plan

Dağıtılmış sorgular için SQL Server SQL tabloları (bağlı) uzak sunucunun CHECK kısıtlamalar tanımını okumak olması gerekir. Yani, arayan bir dağıtılmış sorgu, uzak tablo üstünde DENETIM, ALTER, SAHIPLIĞINI ALıN veya Görünüm TANıMı izninizin olması gerekir.Arayanın dağıtılmış sorgu izinlerinden birini yoksa sorgu 4436 hatası ile başarısız olur.

Not

Bu izinlerin değeri herhangi bir kullanıcı yoksa Tanımı sütunundasys.CHECK_CONSTRAINTS Kullanıcı Kataloğu sorguladığında, NULL olur.

Hata 4436 çözümlemek için

CHECK kısıtlaması tanımı, arayanın görünür yapmak için , dağıtılmış bölümlü görünüm underlies her hedef tablodaki arayanın GÖRÜNÜM TANıMıNı ver.

Örneğin, varsayalım Server1 ve Server2 Federe sunucularıdır ve her bağlantılı sunucu olarak tanımlandı. Varsayalım. master.dbo.t1 tüm üyeleri tarafından erişilebilen bölümlenmiş tablo dpv_users veritabanı rolü. Varsayalım. dpv_users SELECT, INSERT, UPDATE, ve dağıtılmış bölümlü görünüm yoluyla erişim DELETE tüm kullanıcıları içerir.

Aşağıdaki kod, bağlı her bir sunucuda çalıştırabilirsiniz.

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