Tablo değerli Parametreler (veritabanı altyapısı)
Tablo değerli parametreleri içinde yeni bir parametre türü olan SQL Server 2008.Tablo değerli parametreleri tablo kullanıcı tanımlı türler kullanılarak bildirilir.Tablo değerli parametreleri birden çok satır için veri göndermek için kullanabileceğiniz bir Transact-SQL deyim ya da saklı yordam veya işlev oluşturmadan, gibi bir yordam bir geçici tablo veya çok sayıda parametre.
Tablo değerli parametrelerini ole db ve odbc Parametre Dizilerini gibidir, ancak daha fazla esneklik ve daha yakın tümleştirme sunar Transact-SQL.Tablo değerli parametreleri küme tabanlı bir işlemde yer çalışabilme yararı da vardır.
Not
Transact-SQL Tablo değerli parametreleri için yordamları giriş verilerinin bir kopyasını yapmaktan kaçınmak için referans geçirir.
Oluşturma ve yürütmek Transact-SQL tablo değerli parametrelerle yordamları ve onlardan çağrısı Transact-SQL yönetilen kod ve yerel istemci yönetilen tüm dil.
Oluşturma ve Transact-SQL'de tablo değerli parametreleri kullanma
Tablo değerli parametreleri iki temel bileşen vardır: bir SQL Server türü ve bir parametre, başvuran bu tür.Oluşturun ve tablo değerli bir parametre kullanmak için aşağıdaki adımları izleyin:
Bir tablo türü oluşturun ve tablo yapısını tanımlayın.
Nasıl oluşturulacağı hakkında bilgi için bir SQL Server , yazın Bkz: Kullanıcı tanımlı tablo türleri.Tablo yapısını tanımlama konusunda daha fazla bilgi için bkz: CREATE TABLE (Transact-SQL).
Tablo türünde bir parametre olan yordamı bildirin.Hakkında daha fazla bilgi için SQL Server yordamları için bkz: CREATE PROCEDURE (Transact-SQL) ve CREATE FUNCTION (Transact-SQL).
Tablo türünde bir değişken bildirir ve referans tablo türü.Değişkenleri bildirmek hakkında daha fazla bilgi için bkz: DECLARE @local_variable (Transact-SQL).
Tablo değişkeni kullanarak doldurma bir Ekle deyim.Veri ekleme hakkında daha fazla bilgi için bkz: Ekle ve select kullanarak satır ekleme.
Tablo değişkeni oluşturulur ve doldurduktan sonra değişken bir yordamına iletebilirsiniz.
Yordam kapsam dışı duruma geldikten sonra tablo değerli parametre artık kullanılabilir değil.Tür tanımında kesilmeden kadar kalır.
Tablo değerli bir parametre kullanmak için SQL Server Native Client, bkz: Tablo değerli Parametreler (sql Server yerel istemcisi).
Tablo değerli bir parametre kullanmak için ADO.NET, ado bakın.net belgeleri.
Faydaları
Tablo değerli parametreleri daha fazla esneklik sunar ve bazı durumlarda performansı geçici tablolara veya diğer yöntemler parametrelerinin listesini geçmek için çok daha iyi.Tablo değerli parametreleri aşağıdaki yararları sağlar:
Verilerin ilk popülasyon için kilitleri alın bir istemci.
Basit bir programlama modeli sağlar.
Karmaşık iş mantığı içeren tek bir yordam sağlar.
Durumsa sunucuya azaltın.
Bir tablo yapısı farklı kardinalite sağlayabilirsiniz.
Kesinlikle yazılan.
sıralama düzeni düzenini ve benzersiz anahtarlar belirtmek istemci sağlar.
Kısıtlamalar
Tablo değerli parametreleri aşağıdaki kısıtlamaları vardır:
SQL Server Tablo değerli parametreleri sütunları istatistikleri tutmaz.
Tablo değerli parametreleri geçirildi, giriş readonly parametre olarak Transact-SQL yordam.update, delete, gibi dml işlemleri gerçekleştirmek veya bir yordam gövdesinde tablo değerli bir parametre üzerinde yerleştirin.
Tablo değerli bir parametre, bir select INTO veya Ekle exec deyim hedef olarak kullanamazsınız.select INTO, from yan tümce tümce tümcesinde veya Ekle exec tablo değerli bir parametre olabilir dize veya saklı yordam.
Kapsam
Tablo değerli bir parametre saklı yordam, işlev veya dinamik kapsamlı Transact-SQL metin, tıpkı diğer parametreleri.Benzer şekilde, tablo türünde bir değişken gibi bir declare deyim kullanılarak oluşturulmuş herhangi bir yerel değişken kapsam vardır.Dinamik içinde değişkenleri tablo deerli bildirebilirsiniz Transact-SQL ifadeleri ve bu değişkenler olarak tablo değerli Parametreler saklı yordamları ve işlevleri.
Güvenlik
Tablo değerli parametreler için izinleri uygulayın nesne güvenlik modeli için SQL Server, kullanarak Transact-SQL anahtar sözcükler: OLUŞTURMA, grant, deny, alter, Denetim, sahipliği, başvurular, execute, VIEW DEFINITION ve revoke.
Katalog Görünümleri
Tablo değerli parametreleri ile ilgili bilgi edinmek için aşağıdaki sorgu yürütebilir katalog görünümleri: sys.Parameters (Transact-sql), sys.Types (Transact-sql), and sys.table_types (Transact-sql).
Tablo değerli parametreleri vs.bulk INSERT işlemleri
Tablo değerli parametrelerini kullanarak karşılaştırılabilir değişkenleri küme tabanlı kullanmanın diğer yolları; Ancak, sık sık tablo değerli parametreleri kullanarak büyük veri kümeleri için hızlı olabilir.Büyük bir başlangıç maliyeti tablo değerli parametreleri'den toplu işlemler için karşılaştırıldığında, tablo değerli parametreleri de 1000'den daha az satır eklemek için gerçekleştirin.
Tablo değerli parametre geçici tablo önbelleğe alınan yararı yeniden kullandı.Bu tablo önbelleğe alma karşılığı bulk INSERT işlemlerini çok daha iyi ölçeklenebilirlik sağlar.Küçük satır ekleme işlemlerini kullanarak küçük bir performans faydası parametre listeleri kullanılarak elde edilen veya bulk INSERT işlemleri veya tablo değerli parametreleri yerine deyimleri batched.Ancak, bu programın kullanışlı yöntemlerdir ve satır artırmak performans hızla azalır.
Tablo değerli parametreleri eşit derecede iyi veya eşdeğer parametre dizisi uygulaması daha iyi yapmak.
Aşağıdaki tablo kullanmak için hangi teknolojiyi INSERT işlemlerini hızına bağlı gösterir.
Veri kaynağı |
Sunucu mantığı |
Satır sayısı |
En iyi teknoloji |
---|---|---|---|
Sunucudaki verileri biçimlendirilmiş dosya |
Doğrudan ekleme |
< 1000 |
BULK INSERT |
Sunucudaki verileri biçimlendirilmiş dosya |
Doğrudan ekleme |
> 1000 |
BULK INSERT |
Sunucudaki verileri biçimlendirilmiş dosya |
Karmaşık |
< 1000 |
Tablo değerli parametreleri |
Sunucudaki verileri biçimlendirilmiş dosya |
Karmaşık |
> 1000 |
BULK INSERT |
Uzak istemci işlemi |
Doğrudan ekleme |
< 1000 |
Tablo değerli parametreleri |
Uzak istemci işlemi |
Doğrudan ekleme |
> 1000 |
BULK INSERT |
Uzak istemci işlemi |
Karmaşık |
< 1000 |
Tablo değerli parametreleri |
Uzak istemci işlemi |
Karmaşık |
> 1000 |
Tablo değerli parametreleri |
Örnekler
Aşağıdaki örnek Transact-SQL ve nasıl bir tablo değerli parametre türü oluşturmak için ona başvurmak parametre listesi doldurun ve sonra değerleri geçirmek için bir değişken bildirip gösterir bir saklı yordam.
USE AdventureWorks2008R2;
GO
/* Create a table type. */
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50)
, CostRate INT );
GO
/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE usp_InsertProductionLocation
@TVP LocationTableType READONLY
AS
SET NOCOUNT ON
INSERT INTO [AdventureWorks2008R2].[Production].[Location]
([Name]
,[CostRate]
,[Availability]
,[ModifiedDate])
SELECT *, 0, GETDATE()
FROM @TVP;
GO
/* Declare a variable that references the type. */
DECLARE @LocationTVP
AS LocationTableType;
/* Add data to the table variable. */
INSERT INTO @LocationTVP (LocationName, CostRate)
SELECT [Name], 0.00
FROM
[AdventureWorks2008R2].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO