Tabela Valued parametry (aparat bazy danych)

Nowy typ parametru w są wyceniane tabela parametry SQL Server 2008. Za pomocą typów zdefiniowanych przez użytkownika tabela zgłaszane są wyceniane tabela parametrów.Można używać parametrów wycenione tabeli wysyłanie wielu wierszy danych Transact-SQL instrukcja lub procedury, takie jak procedura przechowywana lub funkcja, bez tworzenia tabela tymczasowa lub dużo parametrów.

Wartości w tabela parametrów są podobne do tablic parametrów OLE DB i ODBC, ale oferują więcej elastyczność i ściślejszej integracja z Transact-SQL. Wartości w tabela parametrów także korzystać z mogą uczestniczyć w operacje oparte na zestawie.

Uwaga

Transact-SQL przekazuje parametry wycenione tabela do procedury w odniesieniu do należy unikać wprowadzania kopię danych wejściowych.

Można tworzyć i wykonywać Transact-SQL procedur wycenione tabela parametrów i skontaktuj się z Transact-SQL kodu zarządzanego i macierzystych klientów w dowolnym zarządzany języka.

Tworzenie i używanie tabel Valued parametry w języku Transact-SQL

Parametry wartości tabela mają dwa podstawowe składniki: a SQL Server Typ i parametr, który odwołuje się do tego typu. Aby utworzyć i używać parametrów wycenione tabela, wykonaj następujące kroki:

  1. Tworzenie tabela i definiowania struktury tabela.

    Aby uzyskać informacje na temat tworzenia SQL Server Wpisz, zobacz Typy zdefiniowane przez użytkownika tabela. Aby uzyskać więcej informacji na temat definiowania strukturę tabela zobacz CREATE TABLE (Transact-SQL).

  2. Deklaruje procedury, które ma parametr typu tabela.Aby uzyskać więcej informacji na temat SQL Server procedury, zobacz CREATE PROCEDURE (języka Transact-SQL) i CREATE funkcja języka Transact-SQL).

  3. Zmienna typu Tabela i typ tabeli odwołania.Aby uzyskać informacje na temat deklarowaniu zmiennych, zobacz temat DECLARE @local\_variable (Transact-SQL).

  4. Wypełnić przy użyciu zmiennej tabela WSTAWIANIE instrukcja.Aby uzyskać więcej informacji na temat sposobu wstawiania danych zobacz Adding Rows by Using INSERT and SELECT.

  5. Po utworzona i wypełniona zmiennej tabela, można przekazać zmiennej do procedury.

    Gdy procedura jest poza zakresem, parametr wycenione tabela nie jest już dostępny.Definicja typu pozostaje, dopóki nie zostanie usunięte.

Aby użyć parametru wartości tabela w SQL Server Klient macierzystym, zobacz Tabela Valued parametry (SQL Server Native klient).

Aby użyć parametru wartości tabela w ADO.NET, zapoznaj się z dokumentacją ADO.NET.

Korzyści

Parametry wartości tabela oferują większą elastyczność i w niektórych przypadkach lepiej wydajność niż tabele tymczasowe lub inne sposoby przekazania listy parametrów.Wartości tabela parametry mają następujące zalety:

  • Nie uzyskać blokad dla zapełnianie początkowych danych przez klient.

  • Podaj prosty model programowania.

  • Umożliwia uwzględnienie logika biznesowa złożone w pojedynczej procedury.

  • Zmniejsz round podróży do serwera.

  • Może mieć struktury tabela z inną liczebność.

  • Zdecydowanie są wpisane.

  • Włączenie klient określić kolejność sortowania i unikatowe klucze.

Ograniczenia

Wartości tabela parametry mają następujące ograniczenia:

  • SQL Server statystyki na podstawie kolumn wartości w tabela parametrów nie są zachowywane.

  • Wartości tabela parametry muszą być przekazywane jako parametry wejściowe tylko do odczytu do Transact-SQL procedury. Nie można wykonywać operacje DML, takie jak UPDATE, DELETE, ani INSERT w parametrze wycenione tabela w treści procedura.

  • Nie można używać parametru wartości tabela jako miejsce docelowe instrukcję SELECT INTO lub INSERT EXEC.Parametr wycenione tabela może być w klauzula FROM SELECT INTO lub ciąg INSERT EXEC lub procedura przechowywana.

Zakres

Parametr wycenione tabela jest objęty zakresem, do procedura przechowywana, funkcja lub dynamiczne Transact-SQL tekst dokładnie tak samo jak inne parametry. Podobnie zmienna typu tabela ma zakres, podobnie jak wszystkie inne zmiennej lokalnej, utworzone przy użyciu instrukcja DECLARE.Można zadeklarować wycenione tabela zmiennych w dynamiczny Transact-SQL instrukcje i przekazywanie parametrów jako Wycenione tabela zmienne do procedury przechowywane i funkcje.

Zabezpieczenia

Uprawnienia do wartości w tabela parametrów postępuj zgodnie z modelu zabezpieczeń obiektu SQL Server, za pomocą Transact-SQL słowa kluczowe: CREATE GRANT, DENY, ALTER, kontroli, UWZGLĘDNAIJĄ własności, materiały referencyjne, wykonać, definicja VIEW i REVOKE.

Widoki wykazów

Aby uzyskać informacje, które są skojarzone z parametrami wycenione tabela, kwerendy można następujące widoki wykazu: sys.parameters (Transact-SQL), sys.types (Transact-SQL), a sys.table_types (Transact-SQL).

Tabela Valued vs parametry.Operacje INSERT BULK

Przy użyciu wartości z tabela parametrów jest porównywalna z innych sposobów używania oparte na zestawie zmiennych; jednak za pomocą wartości w tabela parametrów często może być szybciej w przypadku dużych zestawów danych.W porównaniu z operacje zbiorcze, które uruchomienia większych kosztów niż wartości w tabela parametrów wycenione tabela parametrów wykonuje również wstawiania wierszy poniżej 1000.

Parametry wartości w tabeli, które są używane ponownie korzyści z buforowania tabela tymczasowa.Buforowanie tabela umożliwia lepszą skalowalność niż równoważną operacji BULK INSERT.Za pomocą operacji małych wiersza o wkładaniu korzyści mała wydajność może zostać uzyskane za pomocą parametru list lub batched instrukcji BULK INSERT operacji lub wycenione tabela parametrów.Jednak te metody to mniej wygodne do programowania i wydajność zmniejsza się szybko, zwiększ wierszy.

Wartości w tabela parametrów wykonywać równie dobrze lub lepiej niż implementacja równoważnych parametrów tablicy.

W poniższej tabela przedstawiono technologii używania opartą na szybkości operacji wstawiania.

Źródło danych

Logika serwera

Liczba wierszy

Najważniejsze technologie

Plik sformatowanych danych na serwerze

Bezpośredniego wstawiania

< 1000

WSTAWIANIA ZBIORCZEGO

Plik sformatowanych danych na serwerze

Bezpośredniego wstawiania

> 1000

WSTAWIANIA ZBIORCZEGO

Plik sformatowanych danych na serwerze

Złożone

< 1000

Parametry wartości tabela

Plik sformatowanych danych na serwerze

Złożone

> 1000

WSTAWIANIA ZBIORCZEGO

Proces klient zdalnego

Bezpośredniego wstawiania

< 1000

Parametry wartości tabela

Proces klient zdalnego

Bezpośredniego wstawiania

> 1000

WSTAWIANIA ZBIORCZEGO

Proces klient zdalnego

Złożone

< 1000

Parametry wartości tabela

Proces klient zdalnego

Złożone

> 1000

Parametry wartości tabela

Przykłady

W poniższym przykładzie użyto Transact-SQL i pokazuje, jak utworzyć typ parametru wartości w tabela, przy deklarowaniu zmiennej, aby odwoływać, wypełnienie listy parametrów, a następnie przekazać wartości do procedura przechowywana.

USE AdventureWorks;
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 [AdventureWorks].[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 
    [AdventureWorks].[Person].[StateProvince];

/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO