ALTER QUEUE (Transact-SQL)

Zmienia właściwości kolejki.

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

ALTER 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 } ]
       |  DROP }
          ) ] 
[ ; ]

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

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

Argumenty

  • database_name(obiekt)
    Jest nazwą bazy danych, która zawiera kolejki ma być zmieniony.Jeśli nie database_name są dostępne, to ustawienia domyślne z bieżącą bazą danych.

  • schema_name(obiekt)
    To nazwa schematu, do której należy dany nowej kolejki.Jeśli nie schema_name są dostępne domyślnie domyślnego schematu dla bieżącego użytkownika.

  • queue_name
    Jest nazwą kolejki ma być zmieniony.

  • 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.

  • ZACHOWANIE
    Określa ustawienie zachowywania dla kolejki.Jeśli zachowanie = ON wszystkich wiadomości wysłanych lub odebranych w konwersacji przy użyciu 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

    Uwaga

    Ustawienie ZACHOWYWANIA = ON może zmniejszyć wydajność.To ustawienie tylko stosuje się w razie potrzeby do umowy serwisowej, w poziomie dla aplikacji.

  • AKTYWACJA
    Określa informacje dotyczące procedura przechowywana, która jest aktywna do przetwarzania wiadomości przychodzące z tej kolejki.

  • Stan (aktywacja)
    Określa, czy kolejka uaktywnia 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 aktywuje procedura przechowywana.

  • PROCEDURE_NAME = <procedura>
    Określa nazwę procedura przechowywana w celu Uaktywnij, gdy kolejka zawiera wiadomości mają być przetwarzane.Ta wartość musi być SQL Server identyfikator. Aby uzyskać więcej informacji dotyczących aktywacja zobacz Opis, kiedy występuje aktywacja.

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

  • schema_name (procedura)
    To nazwa schematu, który jest właścicielem procedura przechowywana.

  • stored_procedure_name
    To nazwa procedura przechowywana.

  • MAX_QUEUE_READERS = max_readers
    Określa maksymalną liczbę wystąpień procedura przechowywana aktywacja, która kolejce rozpoczyna się jednocześnie.Wartość max_readers musi być liczbą z przedziału od 0 do 32767.

  • 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 activates the stored procedure.Dla użytkownika domena systemu Windows SQL Server musi być podłączony do domena i jest zdolny do sprawdzania poprawności uprawnienia określonego użytkownika, gdy procedura jest aktywna lub Aktywacja nie powiedzie się. 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 ALTER QUEUE.)

  • 'user_name'
    Is the name of the user that the stored procedure executes as.user_name 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.

  • UPUŚĆ
    Usuwa wszystkie informacje dotyczące aktywacja skojarzony z kolejką.

Remarks

Jeżeli kolejka o określonym aktywacja przechowywane procedury zawiera wiadomości, zmienianie stanu aktywacja z OFF on natychmiast uaktywnia procedura przechowywana aktywacja.Zmienianie stanu aktywacja z ON na OFF zatrzymuje brokera z uaktywnieniem wystąpień procedura przechowywana, lecz nie zatrzymuje wystąpienia procedura przechowywana, które są aktualnie uruchomione.

Zmienianie kolejkę, aby dodać procedura przechowywana aktywacja nie powoduje zmiany stanu aktywacja kolejki.Zmienianie procedura przechowywana aktywacja dla kolejki nie wpływa na procedura przechowywana aktywacja wystąpienia, które są aktualnie uruchomione.

Service Broker sprawdza, czy maksymalną liczbę czytelników kolejki do kolejki w ramach procesu aktywacja.W związku z tym umożliwia modyfikowanie kolejki, aby zwiększyć maksymalną liczbę czytelników kolejki Service Broker Aby natychmiast uruchomić więcej wystąpień aktywacja procedura przechowywana. Zmienianie kolejkę, aby zmniejszyć maksymalną liczbę czytelników kolejki nie wpływa na wystąpienia procedury aktywacja przechowywanych obecnie uruchomione.Jednak Service Broker Nie można uruchomić nowe wystąpienie procedura przechowywana do momentu liczbę wystąpień dla aktywacja przechowywane procedury spadnie poniżej skonfigurowanej maksymalnej liczby. Aby uzyskać bardziej szczegółowy opis procesu aktywacja zobacz Opis, kiedy występuje aktywacja.

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.

Jeśli instrukcja przyjęcie lub instrukcji GET GROUP KONWERSACJI określa niedostępne kolejki, tej instrukcji kończy się niepowodzeniem z Transact-SQL Wystąpił błąd.

Uprawnienia

Domyślnie uprawnienia do modyfikacji kolejki do właściciela kolejki członków db_ddladmin or db_owner stałe role bazy danych i członkowie sysadmin ustalić roli serwera.

Przykłady

A.Tworzenie kolejki niedostępne

Poniższy przykład powoduje, że ExpenseQueue kolejka jest niedostępny i nie może odbierać wiadomości.

ALTER QUEUE ExpenseQueue WITH STATUS = OFF ;

B.Zmiana aktywacja procedura przechowywana

W poniższym przykładzie zmienia procedura przechowywana, która rozpoczyna się w kolejce.Procedura przechowywana wykonuje się jako użytkownik, który uruchomił ALTER QUEUE Instrukcja.

ALTER QUEUE ExpenseQueue
    WITH ACTIVATION (
        PROCEDURE_NAME = new_stored_proc,
        EXECUTE AS SELF) ;

C.Zmienianie liczby czytelników kolejki

Poniższy przykład przedstawia 7 Maksymalna liczba procedura przechowywana obiektów Service Broker Uruchamia program dla tej kolejki.

ALTER QUEUE ExpenseQueue WITH ACTIVATION (MAX_QUEUE_READERS = 7) ;

D.Zmiana aktywacja przechowywane procedury i wykonać AS konta

W poniższym przykładzie zmienia procedura przechowywana, Service Broker zostanie uruchomiony. Procedura przechowywana wykonuje się jako użytkownik SecurityAccount.

ALTER QUEUE ExpenseQueue
    WITH ACTIVATION (
        PROCEDURE_NAME = AdventureWorks.dbo.new_stored_proc ,
        EXECUTE AS 'SecurityAccount') ;

E.Ustawianie kolejki, aby zachować wiadomości

Poniższy przykład przedstawia kolejkę, aby zachować wiadomości.Kolejka zachowuje wszystkie wiadomości wysłane do lub z usług, które korzystają z tej kolejki do czasu zakończenia konwersacji, zawierający wiadomość.

ALTER QUEUE ExpenseQueue WITH RETENTION = ON ;

F.Usuwanie z kolejki aktywacja

W następującym przykładzie usunięto wszystkie informacje o aktywacja z kolejki.

ALTER QUEUE ExpenseQueue WITH ACTIVATION (DROP) ;