Udostępnij za pośrednictwem


CREATE QUEUE (języka Transact-SQL)

Tworzy nową kolejkę w bazie danych.W kolejkach przechowywane są wiadomości.Po odebraniu wiadomości usługa, Service Broker wiadomości są umieszczane w kolejce, skojarzone z usługa.

Topic link iconKonwencje składni języka Transact-SQL

CREATE QUEUE <object>
   [ WITH
     [ STATUS = { ON | OFF }  [ , ] ]
     [ RETENTION = { ON | OFF } [ , ] ] 
     [ ACTIVATION (
         [ STATUS = { ON | OFF } , ] 
           PROCEDURE_NAME = <procedure> ,
           MAX_QUEUE_READERS = max_readers , 
           EXECUTE AS { SELF | 'user_name' | OWNER } 
            ) ]
    ]
     [ ON { filegroup | [ DEFAULT ] } ]
[ ; ]

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
        queue_name
} 

<procedure> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
        stored_procedure_name
} 

Argumenty

  • database_name(obiekt)
    Is the name of the database within which to create the new queue.database_name must specify the name of an existing database.Kiedy database_name jest nie dostarczane kolejki jest tworzony w bieżącej bazie danych.

  • schema_name(obiekt)
    To nazwa schematu, do której należy dany nowej kolejki.Schemat domyślnie przyjmuje wartość domyślnego schematu dla użytkownika, który wykonuje instrukcja.Jeśli w instrukcja CREATE QUEUE jest wykonywane przez element członkowski członkowski sysadmin Rola serwera lub członkiem db_dbowner or db_ddladmin stałe role bazy danych w bazie danych określony przez database_name, schema_name można określić schematu inny niż skojarzone z logowania przez połączenie bieżące. W przeciwnym razie schema_name musi być domyślnego schematu dla użytkownika, który wykonuje instrukcję.

  • queue_name
    Jest nazwą kolejki do utworzenia.Ta nazwa musi być zgodne z zasadami SQL Server identyfikatory.

  • Stan (kolejki)
    Określa, czy kolejka jest dostępna (ON) lub jest niedostępny (OFF).Gdy kolejka jest niedostępny, wiadomości nie mogą być dodawane do kolejki lub usuwane z kolejki.Kolejki można tworzyć w stanie niedostępne na szczegółowe komunikaty przychodzące do kolejki, dopóki kolejki jest dostępny za pomocą instrukcja ALTER QUEUE.Jeśli ta klauzula jest pominięty, domyślnie jest włączone i kolejka jest dostępny.

  • ZACHOWANIE
    Określa ustawienie zachowywania dla kolejki.Jeśli zachowanie = ON wszystkich wiadomości wysłanych lub odebranych w konwersacji, korzystające z tej kolejki, są zachowywane w kolejce aż do następnej zakończyły konwersacji.Pozwala to zachować wiadomości w celu prowadzenia inspekcji celów lub wykonać kompensacyjne transakcji, jeśli błąd wystąpi.Jeśli ta klauzula nie zostanie określona, zachowania ustawień domyślnych na OFF.

    Uwaga

    Ustawienie ZACHOWYWANIA = ON może obniżyć wydajność.Tego ustawienia należy używać tylko, jeżeli jest to wymagane dla aplikacji.Aby uzyskać więcej informacji zobaczPrzechowywanie wiadomości.

  • AKTYWACJA
    Określa informacje dotyczące procedura przechowywana, które należy rozpocząć przetwarzanie wiadomości w kolejce.

  • Stan (aktywacja)
    Określa, czy Service Broker Uruchamia procedura przechowywana. Gdy stan = ON i rozpoczyna się kolejka, procedura przechowywana określone z PROCEDURE_NAME, gdy liczba procedury aktualnie uruchomione, jest mniejsza niż MAX_QUEUE_READERS i po nadejściu wiadomości w kolejce szybciej niż procedura przechowywana komunikaty.Gdy stan = OFF, kolejki nie uruchamia się procedura przechowywana.Jeżeli nie określono tę klauzulę, wartością domyślną jest włączone.

  • PROCEDURE_NAME = <procedura>
    Określa nazwę procedura przechowywana, aby rozpocząć przetwarzanie wiadomości w kolejce.Ta wartość musi być SQL Server identyfikator. Aby uzyskać więcej informacji zobaczOpis, kiedy występuje aktywacja.

  • database_name(procedura)
    Jest nazwą bazy danych zawierającej procedura przechowywana.

  • schema_name(procedura)
    To nazwa schematu, zawierającej procedura przechowywana.

  • procedure_name
    To nazwa procedura przechowywana.

  • MAX_QUEUE_READERS **=**max_readers
    Określa maksymalną liczbę wystąpień procedury aktywacja przechowywane kolejki uruchamiany w tym samym czas.Wartość max_readers musi być liczbą z przedziału od 0 and 32 767.

  • wykonać JAKO
    Specifies the SQL Server database user account under which the activation stored procedure runs.SQL Server must be able to check the permissions for this user at the time that the queue starts the stored procedure.Dla użytkownika domena serwer należy podłączyć do domena, podczas uruchamiania procedury lub aktywacja zakończy się niepowodzeniem.Aby SQL Server Użytkownik, serwer może zawsze Sprawdź uprawnienia.

  • SAMODZIELNIE
    Określa, że procedura przechowywana jest wykonywany jako bieżący użytkownik.(Baz danych głównej wykonywania tej instrukcja CREATE QUEUE.)

  • 'user_name'
    To nazwa użytkownika, który wykonuje procedura przechowywana jako.The user_name parameter must be a valid SQL Server user specified as a SQL Server identifier.Bieżący użytkownik musi mieć uprawnienie do PERSONIFIKACJI dla user_name określona.

  • WŁAŚCICIEL
    Określa, że procedura przechowywana jest wykonywany jako właściciel kolejki.

  • ON filegroup | [DEFAULT]
    Określa SQL Server grupa plików, w którym będzie można utworzyć tej kolejki. Można użyć filegroup parametr do zidentyfikowania grupa plików lub za pomocą identyfikatora DEFAULT grupa plików domyślnych brokera bazę danych usługa. W kontekście tę klauzulę domyślny nie jest słowem kluczowym i muszą być wyznaczone jako identyfikator.Jeżeli określono wartość nie grupa plików, kolejki używa grupa plików, w domyślnym dla bazy danych.

Remarks

Kolejki mogą być miejsce docelowe instrukcja SELECT.Jednak zawartość kolejki mogą być modyfikowane tylko przy użyciu instrukcji, które działają na Service Broker rozmowy, takich jak SEND, przyjęcie i END KONWERSACJI. Kolejki nie może być docelowym INSERT, UPDATE, DELETE lub OBCIĘCIU instrukcja.

Kolejka może być tymczasowy obiekt.Dlatego kolejki nazwy rozpoczynające się od # są nieprawidłowe.

Tworzenie kolejki w stanie nieaktywnym pozwala uzyskać infrastruktury w miejsce dla usługa przed zezwoleniem wiadomości ma zostać przyjęta dla kolejki.

Service Broker nie zatrzymuje procedury przechowywane aktywacja, gdy brak wiadomości w kolejce.procedura przechowywana aktywacja powinna zakończyć, gdy wiadomości nie są dostępne w kolejce przez krótki czas.

Procedura przechowywana uprawnień dla aktywacja są sprawdzane podczas Service Broker Uruchamia procedurę przechowywaną nie podczas tworzenia kolejki. Instrukcja CREATE QUEUE nie sprawdza, czy użytkownik określony w wykonać AS klauzula ma uprawnienia do wykonać procedura przechowywana określone w klauzula PROCEDURE NAME.

Gdy kolejka jest niedostępny, Service Broker przechowuje wiadomości dla usług, które korzystają z kolejki w kolejce transmisji dla bazy danych. The sys.transmission_queue catalog view provides a view of the transmission queue.

Kolejki jest obiektem należących do schematu.Kolejki są wyświetlane w sys.Objects Służy do wyświetlania katalogu.

Poniższa tabela zawiera listę kolumn w kolejce.

Nazwa kolumna

Typ danych

Description

Stan

tinyint

Databases Enabled for vardecimal Storage FormatInstrukcja przyjęcie zwraca wszystkie komunikaty o stanie 1.W przypadku przechowywania wiadomości na stan następnie jest ustawiony na 0.Jeśli komunikat zatrzymania jest wyłączona, wiadomości są usuwane z kolejki.Wiadomości w kolejce może zawierać jedną z następujących wartości:

0=Zachowane odebrane wiadomości

1= Gotowy do odbierania

2 Nie zostały jeszcze pełnej =

3= Retained wysłana wiadomość

priorytet

tinyint

Poziom priorytetu przypisaną do tej wiadomości.

NORECOVERY specifies that roll back not occur.

bigint

This allows roll forward to continue with the next statement in the sequence.

conversation_group_id

uniqueidentifier

Identyfikator grupy konwersacji, do której należy ta wiadomość.

conversation_handle

uniqueidentifier

Uchwyt do konwersacji, do której należy ta wiadomość.

message_sequence_number

bigint

Numer sekwencyjny wiadomości w konwersacji.

nazwa_usługi

nvarchar(512)

Redoing a Restore

service_id

int

SQL Server Undoing the effects of a restore is not possible; however, you can negate the effects of the data copy and roll forward by starting over on a per-file basis.

To start over, restore the desired file and perform the roll forward again.

nvarchar(256)

For example, if you accidentally restored too many log backups and overshot your intended stopping point, you would have to restart the sequence.

service_contract_id

int

SQL Server A restore sequence can be aborted and restarted by restoring the entire contents of the affected files.

Restore Full-Text Data

nvarchar(256)

Nazwa typu komunikat opisujący wiadomość.

message_type_id

int

SQL Server The RESTORE statement also can be used to perform restores to alternate locations, differential restores, file and filegroup restores, and differential file and filegroup restores of full-text data.

Reguły upgrade advisor wykryć typ użytkownika ani zestawy z konfliktu nazw.

nchar(2)

In addition, RESTORE can restore full-text files only, as well as with database data.

E=Empty

N=None

X=XML

message_body

varbinary(MAX)

Treść wiadomości

asymkeyproperty

uniqueidentifier

Unikatowy identyfikator dla wiadomości.

Uprawnienia

Uprawnienie do tworzenia kolejki używa członków db_ddladmin or db_owner stałe role bazy danych i sysadmin stała rola serwera.

Materiały referencyjne uprawnień dla kolejki domyślnym właścicielem tej kolejki, członkowie db_ddladmin or db_owner stałe role bazy danych i członkowie sysadmin stała rola serwera.

RECEIVE uprawnień dla kolejki domyślnym właścicielem tej kolejki, członkowie db_owner stałe rola bazy danych i członkowie sysadmin ustalić roli serwera.

Przykłady

A.Tworzenie kolejki bez parametrów

Poniższy przykład tworzy kolejki, który jest dostępny do odbierania wiadomości.Procedura przechowywana aktywacja nie jest określony dla kolejki.

CREATE QUEUE ExpenseQueue ;

B.Tworzenie kolejki niedostępne

Poniższy przykład tworzy kolejki, która nie jest dostępny do odbierania wiadomości.Procedura przechowywana aktywacja nie jest określony dla kolejki.

CREATE QUEUE ExpenseQueue WITH STATUS=OFF ;

C.Tworzenie kolejki i określenie informacji o aktywacja wewnętrzny

Poniższy przykład tworzy kolejki, który jest dostępny do odbierania wiadomości.Kolejki uruchamiania procedura przechowywana expense_procedure gdy wiadomość wprowadza do kolejki. Procedura przechowywana wykonuje się jako użytkownik ExpenseUser. Kolejka rozpoczyna się maksymalnie z 5 wystąpienia dla procedura przechowywana.

CREATE QUEUE ExpenseQueue
    WITH STATUS=ON,
    ACTIVATION (
        PROCEDURE_NAME = expense_procedure,
        MAX_QUEUE_READERS = 5,
        EXECUTE AS 'ExpenseUser' ) ;

D.Tworzenie kolejki na określonym grupa plików

W poniższym przykładzie tworzone na grupa plików, w kolejce ExpenseWorkFileGroup.

CREATE QUEUE ExpenseQueue
    ON ExpenseWorkFileGroup ;

E.Tworzenie kolejki z wielu parametrów

Poniższy przykład tworzy kolejki na DEFAULT grupa plików. Kolejka jest niedostępny.Wiadomości są zachowywane w kolejce do konwersacji, które należą do punktów końcowych.Gdy kolejka jest dostępny za pomocą instrukcji ALTER QUEUE, kolejki uruchamiania procedura przechowywana AdventureWorks.dbo.expense_procedure do przetwarzania wiadomości. Procedura przechowywana wykonuje się jako użytkownik, który uruchomił CREATE QUEUE Instrukcja. Kolejka rozpoczyna się maksymalnie z 10 wystąpienia dla procedura przechowywana.

CREATE QUEUE ExpenseQueue
    WITH STATUS = OFF,
      RETENTION = ON,
      ACTIVATION (
          PROCEDURE_NAME = AdventureWorks.dbo.expense_procedure,
          MAX_QUEUE_READERS = 10,
          EXECUTE AS SELF )
    ON [DEFAULT] ;