Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
İçeriği (sütunlar ve satırlar) sorgu tarafından tanımlanan bir sanal tablo oluşturur. Veritabanındaki bir veya daha fazla tablodaki verilerin görünümünü oluşturmak için bu deyimi kullanın. Örneğin, bir görünüm aşağıdaki amaçlarla kullanılabilir:
Her kullanıcının veritabanı algısına odaklanmak, basitleştirmek ve özelleştirmek için.
Kullanıcıların temel alınan temel tablolara doğrudan erişmesine izin vermeden, kullanıcıların görünüm üzerinden verilere erişmesine izin veren bir güvenlik mekanizması olarak.
Değişmiş bir şemaya sahip tabloyu taklit etmek için geriye dönük uyumlu bir arabirim sağlamak.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server ve Azure SQL Veritabanı için söz dizimi.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
}
Azure Synapse Analytics ve Paralel Veri Ambarı söz dizimi.
CREATE VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
AS <select_statement>
[;]
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Microsoft Fabric Veri Ambarı ve SQL analiz uç noktası söz dizimi.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ] AS <select_statement>
[;]
<view_attribute> ::=
{
[ SCHEMABINDING ]
}
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Arguments
VEYA ALTER
Şunlar için geçerlidir: Azure SQL Veritabanı ve SQL Server (SQL Server 2016 (13.x) SP1 ile başlayarak).
Yalnızca zaten mevcutsa görünümü koşullu olarak değiştirir.
schema_name
Görünümün ait olduğu şemanın adıdır.
view_name
Görünümün adıdır. Görünüm adları, tanımlayıcılar için kurallara uymalıdır. Görünüm sahibi adını belirtmek isteğe bağlıdır.
column
Görünümdeki bir sütun için kullanılacak addır. Sütun adı yalnızca bir sütun aritmetik ifadeden, işlevden veya sabitten türetildiğinde gereklidir; iki veya daha fazla sütunun adı normalde birleştirme nedeniyle aynı olabilirken; veya bir görünümdeki bir sütun, türetildiği sütunun adından farklı bir ad belirtildiğinde. Sütun adları deyiminde SELECT de atanabilir.
Sütun belirtilmezse, görünüm sütunları deyimindeki sütunla SELECT aynı adları alır.
Note
Görünümün sütunlarında sütun adı izinleri, temel alınan verilerin kaynağından bağımsız olarak bir CREATE VIEW veya ALTER VIEW deyiminde geçerlidir. Örneğin, CREATE VIEW deyimindeki SalesOrderID sütunda izinler verilirse, deyimi ALTER VIEW sütunu gibi farklı bir sütun adına sahip olarak SalesOrderIDadlandırabilir OrderRef ve yine de kullanarak SalesOrderIDgörünümle ilişkili izinlere sahip olabilir.
AS
Görünümün gerçekleştirmesi gereken eylemleri belirtir.
select_statement
Görünümü SELECT tanımlayan deyim. deyimi birden fazla tablo ve diğer görünümleri kullanabilir. Oluşturulan görünümün yan tümcesinde SELECT başvuruda bulunan nesneler arasından seçim yapmak için uygun izinler gereklidir.
Görünümün belirli bir tablonun satır ve sütunlarının bir alt kümesi olması gerekmez. Birden fazla tablo veya herhangi bir karmaşıklık yan tümcesine sahip diğer görünümleri kullanan bir SELECT görünüm oluşturulabilir.
Dizinli görünüm tanımında, deyiminin SELECT tek bir tablo deyimi veya isteğe bağlı toplamaya sahip bir çok tablolu JOIN olması gerekir.
SELECT Görünüm tanımındaki yan tümceler şunları içeremez:
Deyimin
ORDER BYseçme listesindeTOPbirSELECTyan tümcesi olmadığı sürece yan tümceImportant
ORDER BYyan tümcesi yalnızca görünüm tanımında orTOPyan tümcesi tarafındanOFFSETdöndürülen satırları belirlemek için kullanılır. YanORDER BYtümcesi, sorgunun kendisinde de belirtilmediği süreceORDER BYgörünüm sorgulandığında sıralı sonuçları garanti etmez.INTOanahtar sözcüğüYan
OPTIONtümcesiGeçici bir tabloya veya tablo değişkenine başvuru.
select_statement deyimini kullandığındanSELECT, yan tümcesinde FROM belirtildiği gibi birleştirme ipuçlarını ve tablo ipuçlarını kullanmak geçerli olur. Daha fazla bilgi için bkz. FROM (Transact-SQL) ve SELECT (Transact-SQL).
İşlevler ve ile ayrılmış SELECT birden çok UNION deyim veya UNION ALLselect_statement kullanılabilir.
KONTROL SEÇENEĞI
Görünümde yürütülen tüm veri değişikliği deyimlerini select_statement içinde ayarlanan ölçütlere uymaya zorlar. Bir satır bir görünüm aracılığıyla değiştirildiğinde, WITH CHECK OPTION değişiklik işlendikten sonra verilerin görünümde görünür kalmasını sağlar.
Note
Yalnızca CHECK OPTION görünüm aracılığıyla yapılan güncelleştirmeler için geçerlidir. Doğrudan görünümün temel tablolarında gerçekleştirilen güncelleştirmelere uygulanabilirliği yoktur.
ENCRYPTION
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri ile Azure SQL Veritabanı.
sys.syscomments dosyasındaki deyim metnini CREATE VIEW içeren girişleri şifreler. kullanmak WITH ENCRYPTION , görünümün SQL Server çoğaltmasının bir parçası olarak yayımlanmasını engeller.
SCHEMABINDING
Görünümü, temel alınan tablo veya tabloların şemasına bağlar. Belirtildiğinde SCHEMABINDING , temel tablo veya tablolar görünüm tanımını etkileyecek şekilde değiştirilemez. Değiştirilecek tablodaki bağımlılıkları kaldırmak için önce görünüm tanımının değiştirilmesi veya bırakılması gerekir. kullandığınızdaSCHEMABINDING, select_statement iki parçalı adları (şema) içermelidir.nesne) başvuruda olunan tablo, görünüm veya kullanıcı tanımlı işlevler. Başvuruda bulunılan tüm nesneler aynı veritabanında olmalıdır.
SCHEMABINDING yan tümcesiyle oluşturulan bir görünüme katılan görünümler veya tablolar, artık şema bağlaması olmayacak şekilde bırakılmadığı veya değiştirilmediği sürece bırakılamaz. Aksi takdirde, Veritabanı Altyapısı bir hata oluşturur. Ayrıca, şema bağlaması olan görünümlere katılan tablolarda deyimlerin yürütülmesi ALTER TABLE , bu deyimler görünüm tanımını etkilediğinde başarısız olur.
VIEW_METADATA
Görünüme başvuran bir sorgu için göz atma modu meta verileri istendiğinde SQL Server örneğinin DB Kitaplığı, ODBC ve OLE DB API'lerine temel tablo veya tablolar yerine görünümle ilgili meta veri bilgilerini döndüreceğini belirtir. Gözatma modu meta verileri, SQL Server örneğinin bu istemci tarafı API'lerine döndürdüğü ek meta verilerdir. Bu meta veriler, istemci tarafı API'lerinin güncelleştirilebilir istemci tarafı imleçler uygulamasına olanak tanır. Gözatma modu meta verileri, sonuç kümesindeki sütunların ait olduğu temel tablo hakkında bilgiler içerir.
ile VIEW_METADATAoluşturulan görünümler için göz atma modu meta verileri, sonuç kümesindeki görünümdeki sütunları açıklarken temel tablo adlarını değil, görünüm adını döndürür.
Bir görünüm kullanılarak WITH VIEW_METADATAoluşturulduğunda, görünümde veya tetiklendiğinde zaman damgası sütunu dışındaki tüm sütunları güncelleştirilebilir INSTEAD OF INSERTINSTEAD OF UPDATE . Güncelleştirilebilir görünümler hakkında daha fazla bilgi için bkz. Açıklamalar.
Remarks
Görünüm yalnızca geçerli veritabanında oluşturulabilir. sorgu CREATE VIEW toplu işlemindeki ilk deyim olmalıdır. Bir görünümde en fazla 1.024 sütun olabilir.
Bir görünümde sorgu yaparken, Veritabanı Altyapısı deyiminin herhangi bir yerinde başvuruda bulunup bulunmadığını ve bunların deyimi bağlamında geçerli olduğundan ve veri değiştirme deyimlerinin veri bütünlüğü kurallarını ihlal etmediğinden emin olmak için denetler. Başarısız olan bir denetim hata iletisi döndürür. Başarılı bir denetim, eylemi temel alınan tablo veya tablolara karşı bir eyleme çevirir.
Görünüm bırakılan bir tabloya veya görünüme bağlıysa, herkes görünümü kullanmaya çalıştığında Veritabanı Altyapısı bir hata iletisi oluşturur. Yeni bir tablo veya görünüm oluşturulursa ve tablo yapısı, bırakılan tablo yerine önceki temel tablodan değişmezse, görünüm yeniden kullanılabilir hale gelir. Yeni tablo veya görünüm yapısı değişirse görünümün bırakılması ve yeniden oluşturulması gerekir.
Yan tümcesiyle bir görünüm oluşturulmazsa, görünümün SCHEMABINDING tanımını etkileyen görünümde değişiklikler yapıldığında sp_refreshview çalıştırın. Aksi takdirde, sorgulandığında görünüm beklenmeyen sonuçlara neden olabilir.
Görünüm oluşturulduğunda, görünüm hakkındaki bilgiler şu katalog görünümlerinde depolanır: sys.views, sys.columns ve sys.sql_expression_dependencies. deyiminin CREATE VIEW metni sys.sql_modules katalog görünümünde depolanır.
Sayısal veya kayan ifadelerle tanımlanan bir görünümde dizin kullanan sorgunun sonucu, görünümde dizini kullanmayan benzer bir sorgudan farklı olabilir. Bu fark, , INSERTveya eylemleri sırasındaki DELETEyuvarlama hatalarına veya UPDATE temel tablolardaki eylemlere neden olabilir.
Veritabanı Altyapısı, bir görünüm oluşturulduğunda ve SET QUOTED_IDENTIFIER ayarlarını SET ANSI_NULLS kaydeder. Bu özgün ayarlar, görünüm kullanıldığında görünümü ayrıştırmak için kullanılır. Bu nedenle, ve için SET QUOTED_IDENTIFIERSET ANSI_NULLS tüm istemci oturumu ayarları görünüme erişildiğinde görünüm tanımını etkilemez.
Azure Synapse Analytics'te görünümler şema bağlamayı desteklemez. Bu nedenle, temel alınan nesnelerde değişiklik yapılırsa, temel meta verileri yenilemek için görünümü bırakmanız ve yeniden oluşturmanız gerekir. Daha fazla bilgi için bkz. Azure Synapse Analytics'te ayrılmış SQL havuzu ve sunucusuz SQL havuzu ile T-SQL görünümleri.
Azure Synapse Analytics'te güncelleştirilebilir görünümler, DML tetikleyicileri (veya AFTERtüründeINSTEAD OF) ve bölümlenmiş görünümler desteklenmez. Daha fazla bilgi için bkz. Azure Synapse Analytics'te ayrılmış SQL havuzu ve sunucusuz SQL havuzu ile T-SQL görünümleri.
Azure Synapse Analytics'te bölümlenmiş görünümler desteklenmez. Daha fazla bilgi için bkz. Azure Synapse Analytics'te ayrılmış SQL havuzu ve sunucusuz SQL havuzu ile T-SQL görünümleri.
Fabric SQL veritabanında görünümler oluşturulabilir, ancak Bunlar Fabric OneLake'e yansıtılmaz. Daha fazla bilgi için bkz.Doku SQL veritabanı yansıtma sınırlamaları
Güncellenebilir görünümler
Aşağıdaki koşullar doğru olduğu sürece, temel alınan temel tablonun verilerini bir görünüm aracılığıyla değiştirebilirsiniz:
,
UPDATEveINSERTdeyimleri de dahil olmak üzereDELETEtüm değişiklikler yalnızca bir temel tablodaki sütunlara başvurmalıdır.Görünümde değiştirilen sütunlar, tablo sütunlarındaki temel verilere doğrudan başvurmalıdır. Sütunlar, aşağıdakiler gibi başka bir şekilde türetilemez:
Toplama işlevi:
AVG,COUNT,SUM, ,MIN,MAX, ,GROUPING,STDEV,STDEVPVARveVARP.Bir hesaplama. Sütun, diğer sütunları kullanan bir ifadeden hesaplanamaz. UNION, UNION ALL, CROSSJOIN, EXCEPT ve INTERSECT küme işleçleri kullanılarak oluşturulan sütunlar bir hesaplamaya eşit olur ve ayrıca güncelleştirilebilir değildir.
Değiştirilen sütunlar ,
GROUP BYveyaHAVINGyan tümcelerinden etkilenmezDISTINCT.TOP, yan tümcesiyle birlikte görünümün
WITH CHECK OPTIONhiçbir yerde kullanılmaz.
Önceki kısıtlamalar, görünümün FROM yan tümcesindeki tüm alt sorgular için geçerlidir, tıpkı görünümün kendisi için geçerli olduğu gibi. Genel olarak, Veritabanı Altyapısının değişiklikleri görünüm tanımından tek bir temel tabloya kesin olarak izleyebilmelidir. Daha fazla bilgi için bkz . Görünüm Aracılığıyla Verileri Değiştirme.
Önceki kısıtlamalar verileri doğrudan bir görünüm aracılığıyla değiştirmenizi engelliyorsa aşağıdaki seçenekleri göz önünde bulundurun:
TETIKLEYICILER YERİNE
INSTEAD OFtetikleyicileri, görünümü güncelleştirilebilir hale getirmek için bir görünümde oluşturulabilir.INSTEAD OFTetikleyici, tetikleyicinin tanımlandığı veri değişikliği deyimi yerine yürütülür. Bu tetikleyici, kullanıcının veri değişikliği deyimini işlemek için gerçekleşmesi gereken eylem kümesini belirtmesine olanak tanır. Bu nedenle, belirli birINSTEAD OFveri değişikliği deyimindeki (INSERT, veyaUPDATE) bir görünüm için tetikleyici varsa,DELETEilgili görünüm bu deyim aracılığıyla güncelleştirilebilir. Tetikleyiciler hakkındaINSTEAD OFdaha fazla bilgi için bkz. DML Tetikleyicileri.Bölünmüş görünümler
Görünüm bölümlenmiş bir görünümse, belirli kısıtlamalara bağlı olarak görünüm güncelleştirilebilir. Gerektiğinde, Veritabanı Altyapısı yerel bölümlenmiş görünümleri, tüm katılan tabloların ve görünümün SQL Server'ın aynı örneğinde yer aldığı görünümler ve görünümdeki tablolardan en az birinin farklı veya uzak bir sunucuda bulunduğu görünümlerle dağıtılmış bölümlenmiş görünümler olarak ayırt eder.
Bölümlenmiş görünümler
Bölümlenmiş görünüm, üye tablolardan biri UNION ALL tarafından aynı şekilde yapılandırılmış olarak tanımlanan ancak aynı SQL Server örneğinde veya federasyon veritabanı sunucuları adı verilen sql Server sunucularının otonom örneklerinden oluşan bir grupta birden çok tablo olarak ayrı olarak depolanan bir görünümdür.
Note
Verileri bir sunucuya yerel olarak bölümlemenin tercih edilen yöntemi bölümlenmiş tablolardır. Daha fazla bilgi için bkz. bölümlenmiş tablolar ve dizinler .
Bir bölümleme düzeni tasarlarken, her bölüme ait olan verilerin net olması gerekir. Örneğin, tablonun verileri Customers üç sunucu konumunda üç üye tablosuna dağıtılır: Customers_33 üzerinde Server1, Customers_66 üzerinde Server2ve Customers_99 üzerinde Server3.
üzerinde Server1 bölümlenmiş bir görünüm aşağıdaki şekilde tanımlanır:
--Partitioned view as defined on Server1
CREATE VIEW Customers
AS
--Select from local member table.
SELECT *
FROM CompanyData.dbo.Customers_33
UNION ALL
--Select from member table on Server2.
SELECT *
FROM Server2.CompanyData.dbo.Customers_66
UNION ALL
--Select from member table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99;
Genel olarak, aşağıdaki biçimdeyse görünümün bölümlenmiş bir görünüm olduğu söylenir:
SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn;
Bölümlenmiş görünümler oluşturma koşulları
Seçim
listGörünüm tanımının sütun listesinde üye tablolarındaki tüm sütunları seçin.
Her
select listbirinin aynı sıralı konumundaki sütunların harmanlamalar da dahil olmak üzere aynı türde olduğundan emin olun. Genellikle için olduğuUNIONgibi sütunların örtük olarak dönüştürülebilir türler olması yeterli değildir.Ayrıca, tüm seçme listelerinde aynı sıralı konumda en az bir sütun (örneğin
<col>) görünmelidir. Üye tablolarında sırasıyla üzerinde<col>tanımlanan CHECK kısıtlamalarınaT1, ..., Tnsahip olacak şekilde tanımlayınC1, ..., Cn.<col>Tabloda
C1tanımlanan kısıtlamaT1aşağıdaki biçimde olmalıdır:C1 ::= < simple_interval > [ OR < simple_interval > OR ...] < simple_interval > :: = < col > { < | > | \<= | >= | = < value >} | < col > BETWEEN < value1 > AND < value2 > | < col > IN ( value_list ) | < col > { > | >= } < value1 > AND < col > { < | <= } < value2 >Kısıtlamaların, belirtilen herhangi bir değerinin
<col>en çok kısıtlamalardanC1, ..., Cnbirini karşılayıp bir dizi kopuk veya örtüşmeyen aralık oluşturacak şekilde olması gerekir. Kopuk kısıtlamaların tanımlandığı sütun<col>bölümleme sütunu olarak adlandırılır. Bölümleme sütunu, temel alınan tablolarda farklı adlara sahip olabilir. Kısıtlamaların, bölümleme sütununun daha önce bahsedilen koşullarını karşılaması için etkin ve güvenilir bir durumda olması gerekir. Kısıtlamalar devre dışı bırakılırsa, seçeneğiniCHECK CONSTRAINT *constraint_name*kullanarakALTER TABLEve bunları doğrulamak için seçeneğini kullanarakWITH CHECKkısıtlama denetimini yeniden etkinleştirin.Aşağıdaki örneklerde geçerli kısıtlama kümeleri gösterilmektedir:
{ [col < 10], [col between 11 and 20] , [col > 20] } { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }Aynı sütun, seçme listesinde birden çok kez kullanılamaz.
Bölümleme sütunu
Bölümleme sütunu, tablonun BİRİnCİl ANAHTARI'nın bir parçasıdır.
Hesaplanan, kimlik, varsayılan veya zaman damgası sütunu olamaz.
Üye tablosunda aynı sütunda birden fazla kısıtlama varsa, Veritabanı Altyapısı tüm kısıtlamaları yoksayar ve görünümün bölümlenmiş bir görünüm olup olmadığını belirlerken bunları dikkate almaz. Bölümlenmiş görünümün koşullarını karşılamak için bölümleme sütununda yalnızca bir bölümleme kısıtlaması olduğundan emin olun.
Bölümleme sütununun güncelleştirilebilirliği konusunda herhangi bir kısıtlama yoktur.
Üye tabloları veya temel alınan tablolar
T1, ..., TnTablolar, dört bölümlü bir ad veya OPENDATASOURCE veya OPENROWSET tabanlı bir ad aracılığıyla başvuruda bulunan SQL Server çalıştıran diğer bilgisayarlardan yerel tablolar veya tablolar olabilir. OPENDATASOURCE ve OPENROWSET söz dizimi bir tablo adı belirtebilir, ancak doğrudan sorgu belirtemez. Daha fazla bilgi için bkz. OPENDATASOURCE (Transact-SQL) ve OPENROWSET (Transact-SQL).
Üye tablolardan biri veya daha fazlası uzaksa, görünüm dağıtılmış bölümlenmiş görünüm olarak adlandırılır ve ek koşullar uygulanır. Bunlar bu bölümün ilerleyen bölümlerinde açıklanmıştır.
Deyimiyle
UNION ALLbirleştirilen tablo kümesinde aynı tablo iki kez görünemez.Üye tabloların tablodaki hesaplanan sütunlarda oluşturulmuş dizinleri olamaz.
Üye tabloların tüm BİRİnCİl ANAHTAR kısıtlamaları aynı sayıda sütunda bulunur.
Görünümdeki tüm üye tabloları aynı ANSI doldurma ayarına sahiptir. Bu, içindeki kullanıcı seçenekleri seçeneği
sp_configureveya SET deyimi kullanılarak ayarlanabilir.
Bölümlenmiş görünümlerdeki verileri değiştirme koşulları
Bölümlenmiş görünümlerdeki verileri değiştiren deyimler için aşağıdaki kısıtlamalar geçerlidir:
deyimi
INSERT, temel alınan üye tabloların bu sütunlar için birDEFAULTkısıtlaması olsa veya değerlere izin verseler bile görünümdeki tüm sütunlar içinNULLdeğerler sağlar. Tanımları olanDEFAULTbu üye tablo sütunları için deyimleri açıkça anahtar sözcüğünüDEFAULTkullanamaz.Bölümleme sütununa eklenen değer, temel alınan kısıtlamalardan en az birini karşılar; aksi takdirde, ekleme eylemi kısıtlama ihlaliyle başarısız olur.
UPDATEdeyimleri, sütununDEFAULTilgili üye tablosunda tanımlanmış bir değeriSETolsa bile, anahtar sözcüğü yan tümcesinde birDEFAULTdeğer olarak belirtemez.Görünümdeki bir veya daha fazla üye tablodaki bir kimlik sütunu olan sütunlar veya
INSERTdeyimi kullanılarakUPDATEdeğiştirilemez.Üye tablolarından biri zaman damgası sütunu içeriyorsa, veriler veya
INSERTUPDATEdeyimi kullanılarak değiştirilemez.Üye tablolarından biri tetikleyici veya
ON UPDATE CASCADE/SET NULL/SET DEFAULTveyaON DELETE CASCADE/SET NULL/SET DEFAULTkısıtlama içeriyorsa, görünüm değiştirilemez.INSERT,UPDATEveDELETEbölümlenmiş bir görünüme karşı eylemlere, aynı görünümde veya deyimindeki üye tablolarından herhangi biriyle bir kendi kendine birleşim varsa izin verilmez.Verileri bölümlenmiş bir görünüme toplu içeri aktarma, veya
bcpveBULK INSERTdeyimleri tarafındanINSERT ... SELECT * FROM OPENROWSET(BULK...)desteklenmez. Ancak , INSERT deyimini kullanarak bölümlenmiş görünüme birden çok satır ekleyebilirsiniz.Note
Bölümlenmiş görünümü güncelleştirmek için kullanıcının üye tablolarında ,
INSERTveUPDATEizinleri olmalıdırDELETE.
Dağıtılmış bölümlenmiş görünümler için ek koşullar
Dağıtılmış bölümlenmiş görünümler için (bir veya daha fazla üye tablosu uzak olduğunda), aşağıdaki ek koşullar geçerlidir:
Güncelleştirmeden etkilenen tüm düğümlerde bölünmezliği garanti etmek için dağıtılmış bir işlem başlatılır.
XACT_ABORT SET,ONveyaINSERTdeyimlerinin çalışması içinUPDATEseçeneğiniDELETEolarak ayarlayın.Smallmoney türünde uzak tablolarda bölümlenmiş görünümde başvuruda bulunan tüm sütunlar para olarak eşlenir. Bu nedenle, yerel tablolardaki karşılık gelen sütunlar da (seçme listesindeki aynı sıralı konumda) para türünde olmalıdır.
Veritabanı uyumluluk düzeyi 110 ve üzeri altında, bölümlenmiş bir görünümde başvuruda bulunan smalldatetime türünde uzak tablolardaki sütunlar smalldatetime olarak eşlenir. Yerel tablolardaki karşılık gelen sütunlar (seçme listesindeki aynı sıralı konumda) smalldatetime olmalıdır. Bu, bölümlenmiş görünümde başvurulan smalldatetime türündeki uzak tablolardaki sütunların datetime olarak eşlendiği ve yerel tablolardaki ilgili sütunların datetime türünde olması gerektiği SQL Server'ın önceki sürümlerindeki davranış değişikliğidir. Daha fazla bilgi için bkz. ALTER DATABASE Uyumluluk Düzeyi (Transact-SQL)
. Bölümlenmiş görünümdeki herhangi bir bağlı sunucu geri döngü bağlantılı sunucu olamaz. Bu, aynı SQL Server örneğine işaret eden bağlı bir sunucudur.
Seçeneğin SET ROWCOUNT ayarı güncelleştirilebilir bölümlenmiş görünümler ve uzak tablolar içeren , INSERTve UPDATE eylemleri için DELETEyoksayılır.
Üye tabloları ve bölümlenmiş görünüm tanımı olduğunda, SQL Server sorgu iyileştiricisi üye tablolarındaki verilere erişmek için sorguları verimli bir şekilde kullanan akıllı planlar oluşturur.
CHECK Kısıtlama tanımlarıyla, sorgu işlemcisi anahtar değerlerinin üye tabloları arasında dağılımını eşler. Kullanıcı sorguyu yayınladığında, sorgu işlemcisi eşlemeyi yan tümcesinde WHERE belirtilen değerlerle karşılaştırır ve üye sunucular arasında en az miktarda veri aktarımıyla bir yürütme planı oluşturur. Bu nedenle, bazı üye tabloları uzak sunucularda bulunuyorsa, SQL Server örneği dağıtılmış sorguları çözümler ve böylece aktarılması gereken dağıtılmış veri miktarının çok az olması gerekir.
Çoğaltmayla ilgili dikkat edilmesi gerekenler
Çoğaltmaya katılan üye tablolarında bölümlenmiş görünümler oluşturmak için aşağıdaki noktalar geçerlidir:
Aboneliklerin güncelleştirilmesiyle birleştirme çoğaltması veya işlem çoğaltmasında temel alınan tablolar varsa , uniqueidentifier sütununun da seçme listesine eklendiğinden emin olun.
Bölümlenmiş görünümdeki tüm
INSERTeylemlerNEWID()sütunu için bir değer sağlamalıdır. DEFAULT anahtar sözcüğü kullanılamadığından , uniqueidentifier sütununa yönelik tüm UPDATE eylemleri değer olarak belirtilmelidirNEWID().Görünümü kullanarak yapılan güncelleştirmelerin çoğaltılması, tabloların iki farklı veritabanında çoğaltılmasıyla aynıdır: tablolar farklı çoğaltma aracıları tarafından sunulur ve güncelleştirmelerin sırası garanti edilmemektedir.
Permissions
Veritabanında CREATE VIEW izni ve görünümün oluşturulduğu şemada ALTER izni gerektirir.
Examples
Aşağıdaki örneklerde AdventureWorks2025 veya AdventureWorksDW2025 veritabanı kullanılır.
A. Görünüm oluşturmak için CREATE VIEW kullanma
Aşağıdaki örnek, deyimini kullanarak bir SELECT görünüm oluşturur. Basit bir görünüm, sütunların bir bileşimi sık sorgulandığında yararlıdır. Bu görünümden elde edilen veriler AdventureWorks2025 veritabanının ve Person.Person tablolarından alınmıştırHumanResources.Employee. Veriler Adventure Works Cycles çalışanları için ad ve işe alma tarihi bilgileri sağlar. Görünüm, iş yıldönümlerini izlemekten sorumlu olan kişi için oluşturulabilir, ancak bu kişiye bu tablolardaki tüm verilere erişim izni verilmeden.
CREATE VIEW hiredate_view
AS
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee AS e
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO
B. ŞIFRELEME ILE kullanma
Aşağıdaki örnekte seçeneği kullanılır WITH ENCRYPTION ve hesaplanan sütunlar, yeniden adlandırılmış sütunlar ve birden çok sütun gösterilir.
Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri ve SQL Veritabanı.
CREATE VIEW Purchasing.PurchaseOrderReject
WITH ENCRYPTION
AS
SELECT PurchaseOrderID, ReceivedQty, RejectedQty,
RejectedQty / ReceivedQty AS RejectRatio, DueDate
FROM Purchasing.PurchaseOrderDetail
WHERE RejectedQty / ReceivedQty > 0
AND DueDate > CONVERT(DATETIME,'20010630',101) ;
GO
C. ONAY SEÇENİYLE KULLAN
Aşağıdaki örnekte, beş tabloya başvuran ve veri değişikliklerinin yalnızca Seattle'da yaşayan çalışanlara uygulanmasına olanak tanıyan adlı dbo.SeattleOnly bir görünüm gösterilmektedir.
CREATE VIEW dbo.SeattleOnly
AS
SELECT p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode
FROM HumanResources.Employee e
INNER JOIN Person.Person p
ON p.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress bea
ON bea.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.Address a
ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince sp
ON sp.StateProvinceID = a.StateProvinceID
WHERE a.City = 'Seattle'
WITH CHECK OPTION ;
GO
D. Görünümde yerleşik işlevleri kullanma
Aşağıdaki örnekte yerleşik işlev içeren bir görünüm tanımı gösterilmektedir. İşlevleri kullandığınızda, türetilmiş sütun için bir sütun adı belirtmeniz gerekir.
CREATE VIEW Sales.SalesPersonPerform
AS
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)
GROUP BY SalesPersonID;
GO
E. Bölümlenmiş verileri kullanma
Aşağıdaki örnekte , , SUPPLY1SUPPLY2ve SUPPLY3adlı SUPPLY4tablolar kullanılır. Bu tablolar, farklı bölgelerde bulunan dört ofisteki tedarikçi tablolarına karşılık gelir.
--Create the tables and insert the values.
CREATE TABLE dbo.SUPPLY1 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 1 and 150),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY2 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 151 and 300),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY3 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 301 and 450),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY4 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 451 and 600),
supplier CHAR(50)
);
GO
--Create the view that combines all supplier tables.
CREATE VIEW dbo.all_supplier_view
WITH SCHEMABINDING
AS
SELECT supplyID, supplier
FROM dbo.SUPPLY1
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY2
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY3
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY4;
GO
INSERT dbo.all_supplier_view VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd')
, ('231', 'FarEast'), ('280', 'NZ')
, ('321', 'EuroGroup'), ('442', 'UKArchip')
, ('475', 'India'), ('521', 'Afrique');
GO
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
F. İki tabloyu birleştirerek görünüm oluşturma
Aşağıdaki örnek, ile bir deyimi kullanarak bir SELECTOUTER JOINgörünüm oluşturur. Birleştirme sorgusunun sonuçları görünümü doldurur.
CREATE VIEW view1
AS
SELECT fis.CustomerKey, fis.ProductKey, fis.OrderDateKey,
fis.SalesTerritoryKey, dst.SalesTerritoryRegion
FROM FactInternetSales AS fis
LEFT OUTER JOIN DimSalesTerritory AS dst
ON (fis.SalesTerritoryKey=dst.SalesTerritoryKey);
İlgili içerik
- ALTER TABLE (Transact-SQL)
- ALTER VIEW (Transact-SQL)
- SILME (Transact-SQL)
- AÇIK GÖRÜNÜM (Transact-SQL)
- INSERT (Transact-SQL)
- Saklı Prosedür Oluştur
- sys.dm_sql_referenced_entities (Transact-SQL)
- sys.dm_sql_referencing_entities (Transact-SQL)
- sp_help (Transact-SQL)
- sp_helptext (Transact-SQL)
- sp_refreshview (Transact-SQL)
- sp_rename (Transact-SQL)
- sys.views (Transact-SQL)
- GÜNCELLEME (Transact-SQL)
- OLAY VERILERI (Transact-SQL)