Udostępnij za pośrednictwem


Tworzenie kolejki (Transact-SQL)

Tworzy nową kolejkę w bazie danych.Wiadomości są przechowywane w kolejkach.Po nadejściu wiadomości dla usługa Service Broker umieszcza wiadomość w kolejce skojarzone z usługa.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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 } 
            ) [ , ] ]
     [ POISON_MESSAGE_HANDLING (
       [ STATUS = { ON | OFF } )
    ]
     [ 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)
    Jest to nazwa bazy danych, w których należy utworzyć nową kolejkę.database_namenależy określić nazwę istniejącej bazy danych.Gdy database_name jest nie zostały przewidziane, kolejka jest tworzony w bieżącej bazie danych.

  • schema_name(obiekt)
    Jest to nazwa schematu, do której należy dany nową kolejkę.Domyślnie schematu do domyślnego schematu dla użytkownika, który wykonuje instrukcja.Jeśli Tworzenie kolejki instrukcja jest wykonywana przez element członkowski sysadmin stała rola serweralub element członkowski db_dbowner lub db_ddladmin ról stałej bazy danych w bazie danych określonej przez database_name, schema_name można określić schematu inny niż skojarzony identyfikator logowania bieżącego połączenia.W przeciwnym razie schema_name musi być domyślnego schematu dla użytkownika, który wykonuje instrukcja.

  • queue_name
    Jest to nazwa kolejki do utworzenia.Ta nazwa musi spełniać wytyczne dla SQL Server identyfikatorów.

  • Stan (kolejki)
    Określa, czy kolejka jest dostępna (włączone) lub jest niedostępny (Wył.).Gdy kolejka jest niedostępny, wiadomości nie można dodane do kolejki lub usunięta z kolejki.Kolejki można tworzyć w stanie niedostępne do przechowywania wiadomości z przybywających do kolejki aż do kolejki są dostępne z kolejki zmienić instrukcja.W przypadku pominięcia tej klauzula jest domyślnie włączone i kolejki jest dostępny.

  • PRZECHOWYWANIA
    Określa ustawienie zachowywania dla kolejki.Jeśli RETENCJI = ON wszystkich wiadomości wysłanych lub odebranych w konwersacji, które korzystają z tej kolejki są zachowywane w kolejce, aż zakończyły konwersacji.Pozwala to zachować komunikaty do celów inspekcji lub wykonać transakcji kompensacyjnych, jeżeli błąd wystąpi.Jeśli nie określono tej klauzula , ustawienie zachowywania domyślnie wyłączona.

    Ostrzeżenie

    Ustawienie ZACHOWYWANIA = ON może obniżyć wydajność.To ustawienie należy używane tylko, jeśli jest wymagane dla aplikacji.Aby uzyskać więcej informacji, zobacz Przechowywania wiadomości.

  • AKTYWACJA
    Określa informacje, o które procedura składowana należy rozpocząć przetwarzanie wiadomości w kolejce.

  • Stan (Aktywacja)
    Określa, czy Service Broker uruchamia procedura składowana.Gdy stan = ON uruchamia kolejki procedura składowana określonego z PROCEDURE_NAME, gdy numer procedury aktualnie uruchomione jest mniej niż MAX_QUEUE_READERS i po nadejściu szybciej niż procedury przechowywane odbierać wiadomości w kolejce wiadomości.Gdy stan = OFF, kolejki nie uruchamia procedura składowana.Jeżeli nie określono tej klauzula , domyślnie jest włączone.

  • PROCEDURE_NAME = <procedury>
    Określa nazwę procedura składowana , aby rozpocząć przetwarzanie wiadomości w kolejce.Ta wartość musi być SQL Server identyfikatora.Aby uzyskać więcej informacji, zobacz Opis po wystąpieniu aktywacji.

  • database_name(procedura)
    Jest to nazwa bazy danych zawierającej procedura składowana.

  • schema_name(procedura)
    Jest to nazwa schematu, zawierającej procedura składowana.

  • procedure_name
    Jest to nazwa procedura składowana.

  • MAX_QUEUE_READERS =max_readers
    Określa maksymalną liczbę wystąpień aktywacja procedura składowana kolejki rozpoczyna się w tym samym czas.Wartość max_readers musi być liczbą z przedziału od 0 i 32767.

  • WYKONANIE JAKO
    Określa SQL Server bazy danych, konto użytkownika, który uruchamiaprocedura składowana aktywacja. SQL Servermusi mieć możliwość sprawdzenia uprawnień dla tego użytkownika w czas rozpoczęcia procedura składowanaw kolejce.Dla użytkownika domena serwer musi podłączony do domena , po uruchomieniu procedury lub aktywacja nie powiedzie się.Dla SQL Server użytkownika zawsze można serwera, sprawdź uprawnienia.

  • SELF
    Określa, że procedura składowana jest wykonywana jako bieżący użytkownik.(Główna baza danych, wykonywania tego utworzyć kolejki instrukcja.)

  • 'user_name'
    Jest nazwą użytkownika wykonującego jako procedura składowana .user_name Parametr musi być prawidłową SQL Server użytkownika określonego jako SQL Server identyfikatora.Bieżący użytkownik musi mieć uprawnienia PERSONIFIKUJ user_name określonego.

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

  • POISON_MESSAGE_HANDLING
    Określa, czy dla kolejki włączono obsługę skażona wiadomość .Domyślnie jest włączone.

    Kolejka z obsługi zestaw na OFF skażona wiadomość nie zostanie wyłączone po pięciu cofnięcia kolejnych transakcji.Pozwala to niestandardowy skażona wiadomość , przekazywanie systemu zdefiniowane przez aplikację.

  • ON filegroup | DEFAULT
    Określa SQL Server grupa plików , na których należy utworzyć tę kolejkę.Można użyć filegroup parametru do identyfikacji grupa plikówlub Użyj identyfikatora domyślnego używania domyślnej grupa plików dla bazy danych usługa broker.W kontekście niniejszej klauzuladomyślnie nie jest słowem kluczowym i musi być rozdzielany jako identyfikator.Po określeniu nie grupa plików kolejki używa domyślnej grupa plików bazy danych.

Uwagi

Kolejka może być miejsce docelowe instrukcjaSELECT.Jednakże, zawartość kolejki mogą być modyfikowane tylko przy użyciu instrukcji, które działają na Service Broker konwersacji, takich jak WYSYŁANIA, ODBIERANIA i zakończenia KONWERSACJI.Kolejki nie może być miejsce docelowe INSERT, UPDATE, DELETE lub OBCIĘCIU instrukcja.

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

Tworzenie kolejki nieaktywny pozwala uzyskać infrastruktury w miejscu dla usługa przed zezwoleniem wiadomości odebrane przez kolejkę.

Service Brokernie zatrzymuje aktywacja przechowywane procedury, gdy nie ma żadnych wiadomości w kolejce.aktywacjaprocedura składowana powinna zakończyć działanie, gdy nie ma wiadomości w kolejce przez krótki czas.

Sprawdzane są uprawnienia aktywacja procedura składowana po Service Broker uruchamia procedura składowananie podczas tworzenia kolejki.Tworzenie kolejki instrukcja nie Sprawdź, czy użytkownika określonego w wykonywanie klauzula ma uprawnienia do wykonać procedura składowana określona w Nazwa procedury klauzula.

Gdy kolejka jest niedostępny, Service Broker przechowuje wiadomości dla usług, które korzystają z kolejki w kolejce transmisji dla bazy danych.sys.transmission_queue Wykazu widok udostępnia widok kolejki transmisji.

Kolejka jest właścicielem schematu obiektu.Kolejki są wyświetlane w sys.objects wykazu widoku.

W poniższej tabela przedstawiono listę kolumn w kolejce.

Nazwa kolumny

Typ danych

Opis

status

tinyint

Stan wiadomości.PRZYJĘCIE instrukcja zwraca wszystkie wiadomości, które mają stan 1.W przypadku przechowywania wiadomości na stan jest zestaw na 0.Jeżeli przechowywania wiadomości jest wyłączona, jest ona usuwana z kolejki.Wiadomości w kolejce może zawierać jedną z następujących wartości:

0= Retained otrzymane wiadomości

1= Gotowy do odbierania

2Nie = kompletne

3= Retained wysłanych wiadomości

priority

tinyint

Priorytet poziom przypisanego do tej wiadomości.

queuing_order

bigint

Numer zamówienia wiadomości w kolejce.

conversation_group_id

uniqueidentifier

Identyfikator grupa konwersacji , należącym do tej wiadomości.

conversation_handle

uniqueidentifier

Uchwyt konwersacji, będącego częścią tej wiadomości.

message_sequence_number

bigint

Numer porządkowy wiadomości w konwersacji.

service_name

nvarchar(512)

Nazwa usługa jest konwersacji.

service_id

int

SQL ServerIdentyfikator obiektu usługa jest konwersacji.

service_contract_name

nvarchar(256)

Nazwa kontrakt , występujący w konwersacji.

service_contract_id

int

SQL ServerIdentyfikator obiektu kontrakt , występujący w konwersacji.

message_type_name

nvarchar(256)

Nazwa typ komunikatu , który opisuje wiadomości.

message_type_id

int

SQL Serverobiekt identyfikator typ komunikatu , który opisuje wiadomości.

validation

nchar(2)

Sprawdzanie poprawności użytego w wiadomości.

E= Pusty

N= Brak

X= XML

message_body

varbinary(MAX)

Treść wiadomości.

message_id

uniqueidentifier

Unikatowy identyfikator wiadomości.

Uprawnienia

Uprawnienie do tworzenia kolejki korzysta z członkami db_ddladmin lub db_owner ról stałej bazy danych i sysadmin stała rola serwera.

Domyślne uprawnienia odniesienia dla kolejki do właściciela kolejki członków db_ddladmin lub db_owner stałe role bazy danych i członkowie sysadmin stała rola serwera.

ODBIERANIE domyślne ustawienia uprawnień dla kolejki do właściciela kolejki członków db_owner rola bazy danychi członków stałych sysadmin stała rola serwera.

Przykłady

A.Tworzenie kolejki bez parametrów

Poniższy przykład tworzy kolejkę, która jest dostępna do odbierania wiadomości.procedura składowana aktywacjanie jest określona dla kolejki.

CREATE QUEUE ExpenseQueue ;

B.Tworzenie kolejki niedostępne

Poniższy przykład tworzy kolejkę, która nie jest dostępny do odbierania wiadomości.procedura składowana aktywacjanie jest określona dla kolejki.

CREATE QUEUE ExpenseQueue WITH STATUS=OFF ;

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

Poniższy przykład tworzy kolejkę, która jest dostępna do odbierania wiadomości.Kolejka uruchamia procedura składowana expense_procedure po wprowadzeniu wiadomości kolejki.procedura składowana jest wykonywana jako użytkownik ExpenseUser.Kolejka rozpoczyna się maksymalnie z 5 wystąpień procedura składowana.

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

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

Poniższy przykład tworzy kolejkę w grupa plików 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 pośrednictwem zmieniać kolejki, kolejka uruchamia procedura składowana 2008R2.dbo.expense_procedure do procesu wiadomości.procedura składowana jest wykonywana jako użytkownik, który uruchomił CREATE QUEUEinstrukcja. Kolejka rozpoczyna się maksymalnie z 10 wystąpień procedura składowana.

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