Parametry oródwierszową (aparat bazy danych)

Parametry oródwierszową są nowy typ parametru w SQL Server 2008.Parametry oródwierszową są deklarowane przy użyciu typów zdefiniowanych przez użytkownika tabela.Można używać parametrów oródwierszową wysyłanie wielu wierszy danych do Transact-SQL instrukcja lub procedury, takie jak procedura składowana lub funkcja, bez tworzenia tabela tymczasowa lub wiele parametrów.

Parametry oródwierszową przypominają tablic parametrów OLE DB i ODBC, ale oferują większą elastyczność i ściślejszej integracja z Transact-SQL.Parametry oródwierszową mieć również korzyści o możliwość uczestniczenia w zestaw-na podstawie operacji.

Ostrzeżenie

Transact-SQL przekazuje tabela-wycenione parametrów procedur w odniesieniu do uniknięcia kopii danych wejściowych.

Można utworzyć i wykonać Transact-SQL procedur z wartościami przechowywanymi w tabela parametrów i wywoływać je z Transact-SQL kodu zarządzanego i rodzimymi klientami w żadnych zarządzanych języka.

Tworzenie i używanie parametrów oródwierszową w języku Transact-SQL

Parametry oródwierszową mają dwa podstawowe składniki: SQL Server typu i parametr odwołujący się do tego typu.Tworzenie i używanie tabela-wyceniane parametrów, wykonaj następujące kroki:

  1. Tworzenie tabela i definiowania struktury tabela.

    Aby uzyskać informacje dotyczące sposobu tworzenia SQL Server typu, zobacz Typów zdefiniowanych przez użytkownika tabeli.Aby uzyskać więcej informacji na temat definiowania struktury tabela, zobacz CREATE TABLE (Transact-SQL).

  2. Zadeklarować procedura ma parametr typu tabela.Więcej informacji o SQL Server procedur, zobacz CREATE PROCEDURE (Transact-SQL) i CREATE FUNCTION (Transact-SQL).

  3. Deklaruje zmienną typu Tabela i tabeli Typ odwołania.Aby uzyskać informacje na temat deklarować zmienne, zobacz DECLARE @local_variable (Transact-SQL).

  4. Wypełnij zmiennej tabela za pomocą WSTAW instrukcja.Aby uzyskać więcej informacji na temat sposobu wstawiania danych Zobacz Dodawanie wierszy przy użyciu WSTAW i wybierz.

  5. Po tabela zmienna jest tworzony i wypełniany, można przekazać zmiennej do procedury.

    Po rutynowych jest poza zakresem tabela-wyceniane parametru nie jest już dostępny.Definicja typu pozostaje, dopóki nie zostanie usunięte.

Aby użyć tabela-parametr wyceniane w SQL Server Native Client, zobacz Parametry oródwierszową (SQL Server Native Client).

Aby użyć tabela-parametr wyceniane w ADO.NET, zobacz ADO.Dokumentacja netto.

Korzyści

Parametry oródwierszową oferują większą elastyczność i w niektórych przypadkach większą wydajność niż tabele tymczasowe lub inne sposoby przekazywania listę parametrów.Parametry oródwierszową mają następujące zalety:

  • Nie nabywają blokad dla początkowej zapełnianie danych od klient.

  • Zapewnia prosty model programowania.

  • Umożliwia uwzględnienie złożonej logika biznesowa w jednej procedury.

  • Zmniejszyć przesłania do serwera.

  • Może mieć strukturę tabela z inną kardynalność.

  • Zdecydowanie są wpisane.

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

Ograniczenia

Parametry oródwierszową ma następujące ograniczenia:

  • SQL Server statystyki dotyczące kolumny z wartościami przechowywanymi w tabela parametry nie są zachowywane.

  • Parametry oródwierszową muszą być przekazywane jako parametry wejściowe READONLY do Transact-SQL procedur.Nie można wykonywać operacje DML, takie jak aktualizacja i usuwanie lub wstawianie na tabela-parametr wyceniane w treści procedura.

  • Nie można używać tabela-parametr wyceniane jako miejsce docelowe instrukcja SELECT INTO lub WSTAW EXEC.A tabela-wyceniane parametr może być w klauzula FROM SELECT INTO lub WSTAW EXEC ciąg lub procedura przechowywana.

Zakres

A tabela-parametr wyceniane jest objęty zakresem procedura składowana, funkcja lub dynamiczne Transact-SQL tekst dokładnie tak samo jak inne parametry.Podobnie zmiennej typu tabela ma zakres, podobnie jak inne lokalne Zmienna utworzony przy użyciu instrukcja DECLARE.Można zadeklarować tabela-wartości zmiennych w dynamiczny Transact-SQL sprawozdań i przekazywania tych zmiennych jako tabela-wycenione parametrów procedur przechowywanych i funkcji

Zabezpieczenia

Uprawnienia dla tabela-parametry wyceniane wykonaj model zabezpieczeń obiektu SQL Server, za pomocą Transact-SQL słowa kluczowe: Tworzenie dotacji, ODMÓW, ALTER, kontroli, własność, odwołania, wykonanie, VIEW DEFINITION i REVOKE.

Wykaz widoków

Aby uzyskać informacje, które jest skojarzone z tabela-wycenione parametrów, kwerendy można następujące widoki wykazu: sys.Parameters (Transact-SQL), sys.types (Transact-SQL), and sys.table_types (języka Transact-SQL).

Vs parametry oródwierszową.Operacje zbiorcze

Za pomocą tabela-parametry wyceniane są porównywalne z innych sposobów wykorzystania oparte na zestawie zmiennych; Jednak za pomocą tabela-parametry wyceniane często może być szybsze dla dużych zestawów danych.W porównaniu do operacji zbiorczych, które mają większe uruchamiania, koszt niż tabela-wycenione parametrów, tabela-parametry wyceniane wykonuje również Wstawianie wierszy poniżej 1000.

Parametry oródwierszową, które są używane ponownie korzystać z tabela tymczasowa buforowanie.Buforowanie tabela umożliwia lepszą skalowalność niż równoważne operacji WSTAWIANIA luzem.Za pomocą operacji małych wstawienie wiersza korzyści małej wydajności mogą zostać uzyskane za pomocą parametru list lub batched instrukcji, zamiast operacji WSTAWIANIA luzem lub tabela-wycenione parametrów.Jednak te metody są mniej wygodna do programowania i szybko zmniejsza wydajność jak zwiększyć wierszy.

Parametry oródwierszową wykonywać równie dobrze lub lepszą, niż implementacja równoważnych parametrów tablicy.

W poniższej tabela przedstawiono technologii na podstawie szybkości operacji wstawiania.

Źródło danych

Logika serwera

Liczba wierszy

Najlepsze technologie

Plik sformatowanych danych na serwerze

Wstaw bezpośrednie

< 1000

WSTAW LUZEM

Plik sformatowanych danych na serwerze

Wstaw bezpośrednie

> 1000

WSTAW LUZEM

Plik sformatowanych danych na serwerze

Złożone

< 1000

Parametry oródwierszową

Plik sformatowanych danych na serwerze

Złożone

> 1000

WSTAW LUZEM

Proces klient zdalnego

Wstaw bezpośrednie

< 1000

Parametry oródwierszową

Proces klient zdalnego

Wstaw bezpośrednie

> 1000

WSTAW LUZEM

Proces klient zdalnego

Złożone

< 1000

Parametry oródwierszową

Proces klient zdalnego

Złożone

> 1000

Parametry oródwierszową

Przykłady

W poniższym przykładzie użyto Transact-SQL i pokazuje, jak utworzyć tabela-typ parametru wyceniane zadeklarować zmienną odwoływać, wypełnienie listy parametrów i następnie przekazać wartości do procedura składowana.

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