CREATE VIEW (Transact-SQL)

İçerikleri (sütunlar ve satırlar) bir sorgu tarafından tanımlanan sanal bir tablo oluşturur. Bu ifade, veritabanındaki bir veya daha fazla tablodaki verilerin bir görünümünü oluşturmak için kullanın. Örneğin, bir görünümü aşağıdaki amaçlarla kullanılabilir:

  • Odak, basitleştirmek ve algı her kullanıcı özelleştirmek için veritabanı vardır.

  • Bir güvenlik mekanizması kullanıcıların görünüm veri erişim sağlayarak, kullanıcıların vermeden izinlerini doğrudan temel tabloları temel.

  • Olan şema değişti tablo öykünmek için geriye dönük uyumlu arabirimi sağlamak.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement 
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::= 
{
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     } 

Bağımsız değişkenler

  • schema_name
    Görünümün ait olduğu şema addır.

  • view_name
    Görünüm adıdır. Görünüm adları tanımlayıcıları kuralları izlemeniz gerekir. Görünüm sahibi adını belirten isteğe bağlı.

  • column
    Görünümünde bir sütunu için kullanılan addır. Bir aritmetik ifade, bir işlev veya sabit sütun yalnızca türetilmiş bir sütun adı gereklidir; ne zaman iki veya daha fazla sütun aksi takdirde genellikle bir birleşim nedeniyle aynı adı olabilir; ya da ne zaman bir görünüm sütununda belirtilen hangi o türetilmiş sütun farklı bir adı. Sütun adları da select deyiminde atanabilir.

    Eğer columnbelirtilmemişse, görünümü sütunları elde select deyimi sütun aynı ada.

    [!NOT]

    Sütunları görmek için bir sütun adı için izinler ne olursa olsun temel veri kaynağı görünüm oluştur veya alter VIEW deyimi uygulanabilecek. Örneğin, üzerinde izin verilen SalesOrderID bir alter VIEW deyimi sütun create VIEW deyimi, ad SalesOrderID gibi farklı bir sütun sütun adı OrderRefve hala görünümü kullanımıyla ilişkili izinlere sahip SalesOrderID.

  • AS
    Eylemleri gerçekleştirmek için görünümdür belirtir.

  • select_statement
    Görünümü tanımlayan select deyimi iş. Açıklamada, birden fazla tablo ve diğer görünümleri kullanabilirsiniz. Oluşturulan görünümü select yan tümcesinde başvurulan nesneleri seçmek için uygun izinleri gereklidir.

    Basit satırlar alt kümesini ve belirli tablo sütunlarının görünüm yok. Bir görünümde birden fazla tablo veya diğer görünümleri kullanan bir select yan tümcesi herhangi bir karmaşıklık oluşturulabilir.

    Bir dizin oluşturulmuş görünüm tanımında bir tek tablo deyimi veya isteğe bağlı toplama ile multitable birleştirme select deyimi olmalıdır.

    select yan tümceleri view definition aşağıdakileri içeremez:

    • order by yan tümcesini, olmadıkça Ayrıca bir top yan tümcesi select deyimi seçme listesinde

      Önemli notÖnemli

      order by yan tümcesi yalnızca üst veya uzaklığı yan view definition tarafından döndürülen satırları belirlemek için kullanılır. Görünüm sorgulandığında, order by de sorguda belirtilmediği sürece order by yan tümcesi sipariş edilen sonuç garanti etmez.

    • INTO anahtar sözcüğü

    • OPTION yan tümcesi

    • Geçici bir tablo veya tablo değişkeni başvuru.

    Çünkü select_statementselect deyimi kullanır kullanmak için geçerli olduğunu <join_hint > ve <table_hint > from yan tümcesinde belirtilen ipuçları. Daha fazla bilgi için FROM (Transact-sql)ve select (Transact-sql).

    İçinde işlev ve Birliği veya UNION all ayrılmış birden çok select deyimi kullanılabilir select_statement.

  • ONAY SEÇENEĞİ
    Tüm veri değişikliği deyimleri içinde ayarlanan ölçütleri izleyin görünümü karşı yürütülen kuvvetleri select_statement. Bir satır bir görünümü değiştirildiğinde, WITH check OPTION değişikliği kararlıdır sonra Veri Görünümü görünür kalır emin olur.

    [!NOT]

    Doğrudan bir görünümün temel tablolarına yapılan güncelleştirmeleri Denetle seçeneği belirtilmiş olsa bile görünümü karşı doğrulanmadı.

  • ENCRYPTION
    Girişleri şifreler sys.syscomments create VIEW deyimi metin içeren. WITH ENCRYPTION kullanarak, SQL Server çoğaltma bir parçası olarak yayınlanan görünümü engeller.

  • SCHEMABINDING
    Görünümü temel tablo veya tabloları şemasına bağlar. SCHEMABINDING belirtildiğinde, temel tablo veya tabloları, görünüm tanımını etkileyecek bir şekilde değiştirilemez. View definition gerekir ilk değiştirilebilir veya değiştirilecek tablonun bağımlılıkları kaldırmak için düştü. SCHEMABINDING, kullandığınızda select_statementŞemaiki bölümü adları içermelidir (schema**.**object) tabloları, görünümleri veya başvurulan kullanıcı tanımlı işlevler. Tüm başvurulan nesneler aynı veritabanı içinde olmalıdır.

    Görünümleri veya bir görünüm SCHEMABINDING yan tümcesi ile oluşturulan katılmak tablolar sürece görünümü bırakılan veya artık Şema Cilt payı olacak şekilde değiştirilmiş bırakılan. Aksi takdirde, Veritabanı Altyapısıhata yükseltir. Bu ifadeler görünüm tanımını etkiler de, çalıştırma alter table deyimlerinin tablolarda Şema Cilt payı olan görünümleri katılan başarısız.

  • VIEW_METADATA
    Belirleyen bir örneği SQL Serverbrowse-mode metadata görünüme başvuran bir sorgu için istenen zaman db-Library, odbc ve ole db API için temel tablo veya tablo yerine Görünüm meta veri bilgilerini dönecektir. Browse-mode metadata ise ek meta veriler, örneğini SQL ServerBu istemci API'lerine verir. Bu meta verileri güncelleştirilebilir istemci tarafı imleçleri uygulamak istemci API'ler sağlar. Browse-mode metadata ait sonuç kümesinde sütun temel tablo hakkındaki bilgileri içerir.

    Sonuç kümesinde görünümden sütunlar açıklar VIEW_METADATA ile oluşturulan görünümleri için browse-mode metadata görünüm adı ve temel tablo adlarını döndürür.

    Dışında bir görünüm WITH VIEW_METADATA, tüm sütunları kullanarak oluşturulan bir timestampsütun, olan Görünümü INSTEAD OF INSERT veya update INSTEAD OF Tetikleyiciler güncelleştirilebilir. Güncelleştirilebilir görünümler hakkında daha fazla bilgi için bkz: açıklamalar.

Açıklamalar

Bir görünümü yalnızca geçerli veritabanında oluşturulabilir. create VIEW sorgu toplu iş içinde ilk deyim olmalıdır. Bir görünüm, en fazla 1024 sütun olabilir.

Bir görünümü sorgularken Veritabanı Altyapısıherhangi bir açıklamada başvurulan tüm veritabanı nesnelerini bulunduğunu ve bunların ifade bağlamında geçerli olduğunu ve veri değişikliği deyimleri herhangi bir veri bütünlüğü kuralları ihlal değil emin olmak için denetler. Başarısız bir denetim bir hata iletisi döndürür. Başarılı bir denetleme temel tablo veya tablolar karşı eylem eyleme dönüştürür.

Eğer bir tablo veya Görünüm çıkarıldı, görünüm bağlıdır Veritabanı Altyapısıherkes görünümü kullanmaya çalıştığında hata iletisi üretiyor. Yeni tablo veya görünüm oluşturulur ve yerine bırakılan bir önceki temel tablodan tablo yapısını değiştirmez, görünümü yeniden kullanılabilir hale gelir. Yeni tablo veya Görünüm yapısını değişirse, görünümün atılacak ve gerekir.

Görünüm SCHEMABINDING yan tümcesi ile oluşturduysanız, sp_refreshview görünüm tanımı etkileyen Görünüm altındaki nesnelere değişiklikler yapıldığında çalıştırılmalıdır. Aksi takdirde, o sorgulandığında görünümü beklenmeyen sonuçlar doğurabilir.

Görünüm oluşturulduğunda, aşağıdaki katalog görünümleri görünüm hakkında bilgi saklanır: sys.views, sys.columns, ve c.sys.sql_expression_dependencies. create VIEW deyimi metin depolanır sys.sql_modules Katalog görünümü.

Bir dizin ile tanımlanmış bir görünüm kullanan bir sorgu numericya floatifadeleri farklı dizin görünümü kullanmayan benzer bir sorgu sonucu olabilir. Bu fark göre yuvarlama hatalarının temel tablolarda INSERT, delete veya update eylemleri sırasında neden olabilir.

Veritabanı AltyapısıBir görünüm oluşturulduğunda, set quoted_ıdentıfıer ve set ansı_nulls ayarlarını 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, görünümü erişildiğinde istemci oturum ayarları set quoted_ıdentıfıer ve set ansı_nulls view definition etkilemez.

Güncelleştirilebilir görünümler

Aşağıdaki koşullar doğruysa sürece bir görünümü aracılığıyla bir temel tablo verilerini değiştirebilirsiniz:

  • update, INSERT ve delete deyimlerini dahil olmak üzere herhangi bir değişiklik, sadece bir temel tablodan sütun başvuru gerekir.

  • Görünümde değiştirilen sütunları tablo sütunları temel verileri doğrudan başvuru gerekir. Sütunları herhangi bir başka yolla gibi aşağıdaki türetilemez:

    • Bir toplama işlevi: avg, count, TOPLA, MIN, max, gruplandırma, STDSAPMA, STDSAPMAS, var ve varp.

    • Bir hesaplama. Diğer sütunları kullanan bir ifade sütun hesaplanamıyor. Sütunlar kümesi operatörleri Birliği, UNION all, CROSSJOIN, except, kullanılarak oluşturulur ve bir hesaplama tutarı KESİŞTİĞİ ve de güncelleştirilebilir değil.

  • group by, HAVING veya DISTINCT yan tümceleri tarafından değiştirilen sütunları etkilenmez.

  • top kullanılan değil her yerde de select_statementWITH check OPTION yan tümcesi ile birlikte bakış.

Görünümüne uygularken önceki için herhangi bir alt sorgular içinde görünüm, yan sınırlamalar. Genellikle, Veritabanı Altyapısıizleme değişiklikleri açıkça gelen bir temel tablo view definition gerekir. Daha fazla bilgi için, bkz. Bir görünüm üzerinden veri değiştirme.

Önceki kısıtlamalar Veri Görünümü doğrudan aracılığıyla değiştirmesini önlemek, aşağıdaki seçenekleri dikkate alın:

  • Tetikleyicileri ıNSTEAD OF

    Bir görünümde görünüm güncellenebilir yapmak için ıNSTEAD of Tetikleyiciler oluşturulabilir. INSTEAD of tetikleyici tetikleyici tanımlanmış veri değişikliği ifadesi yerine yürütülür. Bu tetikleyici kümesi veri değişikliği deyimi işlemek için gerçekleşmesi gereken eylemleri belirlemek sağlar. Bu nedenle, görünüm için bir INSTEAD of tetikleyicisi varsa, bir özel veri değişikliği deyimi (INSERT, update veya delete), ilgili görünümün beyanı güncelleştirilebilir. Hakkında daha fazla bilgi için ıNSTEAD OF Tetikleyicileri, bakın dml Tetikleyicileri.

  • Bölümlenmiş görünümler

    Bölümlenmiş görünümün görünüm ise, görünümü güncelleştirilebilir belirli sınırlamalara tabidir. Gerektiğinde, Veritabanı Altyapısıtüm katılan tablolar ve görünümü üzerinde aynı örneği olan Gösterim olarak yerel bölümlenmiş görünümler ayıran SQL Serverve dağıtılmış bölümlenmiş görünümler olarak farklı veya uzak bir sunucuda en az bir tablo görünümünde bulunduğu Gösterim.

Bölümlenmiş görünümler

Bölümlenmiş görünümün bir UNION all tarafından aynı şekilde yapılandırılmış, ancak birden çok tablo ya da aynı örneği olarak ayrı ayrı depolanan üye tabloların tanımlandığı görülmektedir SQL Serverya da Özerk örneklerini bir grup SQL ServerFedere veritabanı sunucuları olarak adlandırılan sunucuları,.

[!NOT]

Tercih için bölümleme veri sunucusunda yerel bölümlenmiş tablolar yöntemidir. Daha fazla bilgi için, bkz. Bölümlenmiş tablolar ve dizinler.

Bir bölümleme şemasını tasarlarken, bu verileri her bölüme ait açık olmalıdır. Örneğin, verileri Customerstablo üç sunucu konumlarını üç üye tablolardaki dağıtılır: Customers_33üzerinde Server1, Customers_66üzerinde Server2, ve Customers_99üzerine Server3.

Bölümlenmiş bir görünüm Server1şu ş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 mmeber table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99;

--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 mmeber table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99;

Genellikle, bir görünümü aşağıdaki formu ise Bölümlenmiş görünümün olduğu söylenir:

SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn;

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ı

  1. Seçlist

    • Üye tablolardaki tüm sütunların Görünüm tanımı sütun listesinden seçilmesi gerekir.

    • Aynı sıralı konumunu her sütun select listalfabe gibi aynı türde olmalıdır. Genellikle Birliği olduğu gibi sütunlar için örtük olarak dönüştürülebilir türleri yeterli değildir.

      Ayrıca, en az bir sütun (örneğin <col>) tüm seçin listeleri aynı sıra konumda görünmelidir. Bu <col>bir şekilde tanımlanmalıdır, üye tabloları T1, ..., Tncheck kısıtlamaları var C1, ..., Cntanımlanan <col>, sırasıyla.

      Kısıtlama C1tablo üzerinde tanımlı T1aş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 >
      
      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 herhangi bir değeri belirtilen şekilde olmalı, <col>, en kısıtlamalar birini tatmin C1, ..., Cnböylece ayrık ya da örtüşmeyen aralıkların birtakım kısıtlamalar oluşturmalıdır. Sütun <col>, ayrık kısıtlamaları tanımlanır bölümleme sütununda olarak adlandırılır. Bölümleme sütununda, temeldeki tabloları farklı adlara sahip unutmayın. Kısıtlamalar, onları bölümleme sütununda yukarıda belirtilen şartları karşılamak etkin ve güvenilir bir durumda olmalıdır. Kısıtlamalar devre dışıysa, denetleme SINIRLAMASINI kullanarak denetleme kısıtlaması yeniden constraint_namealter table ve onları doğrulamak için kontrol seçeneği kullanma seçeneği.

      Aşağıdaki örnekler, geçerli kümesi sınırlamaları:

      { [col < 10], [col between 11 and 20] , [col > 20] }
      { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }
      
      { [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ütunu seçme listesinde birden çok kez kullanılamaz.

  2. Bölümleme sütununda

    • Bölümleme sütununda birincil anahtar tablosunun bir parçasıdır.

    • Bir hesaplanmış, kimlik, varsayılan, olamaz veya timestampsütun.

    • Üye tablo aynı sütun birden fazla kısıtlama ise, veritabanı altyapısı tüm sınırlamalarını yoksayar ve onları görünümünde Bölümlenmiş görünümün olup olmadığını belirlerken dikkate almaz. Bölümlenmiş görünümün şartları karşılamak için var olmalıdır bölümleme sütununda yalnızca bir bölümleme sınırlama.

    • Bölümleme sütunun güncelleştirilebilme üzerinde sınırlama yoktur.

  3. Üye tabloları veya temel tabloT1, ..., Tn

    • Tabloları, yerel tablo veya tablolardaki verileri kullanan diğer bilgisayarlara olabilir SQL Server, başvuru four-part adı veya opendatasource veya openrowset tabanlı bir ada. openrowset ve opendatasource sözdizimi, bir tablo adı, ama değil doğrudan sorgu belirtebilirsiniz. Daha fazla bilgi için opendatasource (Transact-sql)ve OPENROWSET (Transact-SQL).

      Bir veya daha fazla üye tablolar uzak, dağıtılmış Bölümlenmiş görünümün görünüm denir ve ek koşullar geçerlidir. Onlar daha sonra bu bölümde açıklanmıştır.

    • Aynı tablo, UNION all deyimini ile birleştirilmiş tablolar kümesi iki kez bulunamaz.

    • Üye tabloları tablosundaki hesaplanmış sütunları oluşturulan dizinler olamaz.

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

    • Tüm üye Tablo görünümünde aynı ANSI doldurma ayarı olmalıdır. Bu kullanarak ayarlanabilir kullanıcı seçenekleri içinde seçenek sp_configure ya da set deyimi.

Veri bölümlenmiş görünümleri değiştirmek için koşullar

Bölümlendirilmiş görünümlerde verileri değiştirmek deyimleri aşağıdaki kısıtlamalar geçerlidir:

  • INSERT deyimi bile temel üye tablolarda bu sütun için varsayılan kısıtlama ya da onlar için boş değerlere izin veriyorsa görünümünde, tüm sütunlar için değerleri girmeniz gerekir. default tanımları olan bu üye tablo sütunlar, tablolar açıkça varsayılan anahtar kullanamazsınız.

  • Bölümleme sütuna eklenen değer temel kısıtlamalar en az birini karşılamak gerekir; Aksi takdirde Insert eylemi bir kısıtlama ihlali ile başarısız olur.

  • Sütunun karşılık gelen üye tablosunda tanımlanan varsayılan değeri varsa bile update deyimleri default anahtar sözcük set yan tümcesinde değer olarak belirtemezsiniz.

  • Bir veya birden fazla üye tablolar kimlik sütunu olan sütunlar görünümünde, bir INSERT veya update deyimi kullanılarak değiştirilemez.

  • Üye tabloları içeriyorsa bir timestampsütunu, bir INSERT veya update deyimi kullanarak verileri değiştirilemez.

  • Üye tablolardan birini tetikleyici veya bir on update cascade ve set null ve set default veya on delete cascade ve set null ve set default kısıtlaması varsa, görünümde değiştirilemez.

  • INSERT, update ve delete eylemleri Bölümlenmiş görünümün karşı varsa bir iç birleşim ile aynı görünüm veya herhangi bir üye tabloların deyimi içinde izin verilmez.

  • Bölümlenmiş görünümün veri alma toplu tarafından desteklenmeyen bcp veya bulk INSERT ve Ekle... SEÇİN * from openrowset(bulk...) deyimleri. Ancak, birden çok satır bölümlenmiş bir görünüm kullanarak ekleyebileceğiniz Ekle deyimi.

    [!NOT]

    Bölümlenmiş görünümün güncelleştirmek için kullanıcı INSERT, update ve delete üye tabloları izinleriniz olmalıdır.

Dağıtılmış bölümlenmiş görünümler için ek koşullar

(Bir veya daha fazla üye tablolar uzak olduğunuzda) Dağıtılmış bölümlenmiş görünümler için aşağıdaki ek koşullar geçerlidir:

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

  • xact_abort set seçenek on olarak ayarlanmış INSERT, update veya delete deyimleri çalışmak olmalıdır.

  • Herhangi bir uzak tablo türündeki sütunlarda smallmoneybölümlenmiş bir görünümde başvurulan olarak eşlenen money. Bu nedenle, yerel tabloları (aynı konumdaki sıra seçin listesinde) karşılık gelen sütunları da türünde olmalıdır money.

  • 110, Herhangi bir uzak tablo türündeki sütunlar altında veritabanı uyumluluk düzeyi smalldatetimebölümlenmiş bir görünümde başvurulan olarak eşlenen smalldatetime. Yerel tabloları (aynı konumdaki sıra seçin listesinde) karşılık gelen sütunları olması gerekir smalldatetime. Bu davranış önceki sürümlerinden farklıdır SQL Serversütunlarında hangi herhangi bir uzak tablo türü smalldatetimebölümlenmiş bir görünümde başvurulan olarak eşlenen datetimeve yerel tablolarda karşılık gelen sütun türü olmalıdır datetime. Daha fazla bilgi için, bkz. alter database uyumluluk düzeyi (Transact-sql).

  • Herhangi bir bağlantılı sunucu olarak Bölümlenmiş görünümün Geridöngü bağlantılı sunucu olamaz. Bu aynı örneğine işaret eden bağlantılı sunucu olduğunu SQL Server.

INSERT, update set rowcount seçeneği ayar gözardı edilir ve görünümler ve uzak tabloları güncelleştirilebilir ilgili delete eylemleri bölümlenmiş.

Üye tabloları ve Bölümlenmiş görünümün tanımı bir yerde olduğunuzda SQL Serversorgu iyileştirici üye tablolardan veri erişim için sorgular'ın verimli kullanan akıllı planları oluşturur. check kısıtlaması tanımları ile sorgu işlemci anahtar değerleri dağıtım üye tabloları eşleştirir. Bir kullanıcı bir sorgu gönderdiğinde, sorgu işlemci where yan tümcesinde belirtilen değerleri Haritayı karşılaştırır ve üye sunucular arasında veri aktarımı çok az miktarda yürütme planı oluşturur. Bu nedenle, her ne kadar bazı üye tablolar uzak sunucuları, örneği bulunabilir SQL Serverçözümler dağıtılmış sorgular transfer edilmesi gereken dağıtılmış veri miktarı çok az olması.

Çoğaltma konuları

Bölümlendirilmiş görünümlerde üyesinde çoğaltmaya katılan tablolar oluşturmak için aşağıdaki önemli noktalar geçerlidir:

  • Temel tabloları birleştirme çoğaltma veya işlem çoğaltma abonelikleri güncelleştirme ile ilgili uniqueidentifiersütun da eklenebilir seçme listesinde.

    Bölümlenmiş görünümün içine INSERT eylemleri için NEWID() değer sağlamalısınız uniqueidentifiersütun. Herhangi bir güncelleştirme eylem karşı uniqueidentifiersütun olmalıdır tedarik newid değer olarak default anahtar kullanıldığından.

  • Görünüm kullanılarak yapılan güncelleştirmeleri çoğaltma zaman tabloları iki farklı veritabanlarında çoğaltılır aynıdır: tabloları farklı çoğaltma aracıları tarafından sunulan ve güncelleştirmeleri sırasını garanti.

İzinler

create VIEW izni veritabanında ve görünümü oluşturulmaktadır şema alter izni gerektirir.

Örnekler

A.Basit bir create VIEW kullanarak

Aşağıdaki örnek, basit bir kullanarak bir görünüm oluşturur SELECTdeyimi. Basit Görünüm, sütunları birlikte sık sık sorgulanan yararlıdır. Bu görünüm verileri gelir HumanResources.Employeeve Person.Persontablo AdventureWorks2012veritabanı. Adı ve işe alma tarihi bilgi çalışanları için veri sağlayan Adventure Works Cycles. Kişinin iş yıldönümleri izleme sorumlu, ama bu tablolardaki tüm verilere bu kişi erişim vermeden görünümü oluşturulamadı.

USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('hiredate_view', 'V') IS NOT NULL
DROP VIEW hiredate_view ;
GO
CREATE VIEW hiredate_view
AS 
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee e 
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO

B.ŞİFRELEME ile kullanma

Aşağıdaki örnek WITH ENCRYPTIONseçeneğini ve hesaplanmış sütunları, yeniden adlandırılan sütun ve birden çok sütunu gösterir.

USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('Purchasing.PurchaseOrderReject', 'V') IS NOT NULL
    DROP VIEW Purchasing.PurchaseOrderReject ;
GO
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çeneği ile kullanma

Aşağıdaki örnek, adlı bir görünümü gösterir SeattleOnlybeş tablolara başvuran ve Seattle yaşayan çalışanlar uygulamak veri değişiklikleri sağlar.

USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('dbo.SeattleOnly', 'V') IS NOT NULL
    DROP VIEW dbo.SeattleOnly ;
GO
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.Bir görünüm içinde yerleşik işlevleri kullanma

Aşağıdaki örnek, bir view definition yerleşik fonksiyon içerir gösterir. İşlevler kullandığınızda, türetilmiş sütun için bir sütun adı belirtmeniz gerekir.

USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('Sales.SalesPersonPerform', 'V') IS NOT NULL
    DROP VIEW Sales.SalesPersonPerform ;
GO
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ş veri kullanma

Aşağıdaki örnek, adlı tablolarını kullanır SUPPLY1, SUPPLY2, SUPPLY3, ve SUPPLY4. Bu tablolar, dört ofisleri, farklı ülkelerde/bölgelerde bulunan tedarikçi tablolara 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
INSERT dbo.SUPPLY1 VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd');
INSERT dbo.SUPPLY2 VALUES ('231', 'FarEast'), ('280', 'NZ');
INSERT dbo.SUPPLY3 VALUES ('321', 'EuroGroup'), ('442', 'UKArchip');
INSERT dbo.SUPPLY4 VALUES ('475', 'India'), ('521', 'Afrique');
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;

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

alter VIEW (Transact-sql)

Sil (Transact-sql)

VIEW (Transact-sql) bırak

Insert (Transact-sql)

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üncelleştirme (Transact-sql)

eventdata (Transact-sql)

Kavramlar

Saklı yordam oluşturma