Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Megváltoztatja a sor tulajdonságait.
Transact-SQL szintaxis konvenciók
Syntax
ALTER QUEUE <object>
queue_settings
| queue_action
[ ; ]
<object> : :=
{ database_name.schema_name.queue_name | schema_name.queue_name | queue_name }
<queue_settings> : :=
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 }
) [ , ]]
[ POISON_MESSAGE_HANDLING (
STATUS = { ON | OFF } )
]
<queue_action> : :=
REBUILD [ WITH <query_rebuild_options> ]
| REORGANIZE [ WITH (LOB_COMPACTION = { ON | OFF } ) ]
| MOVE TO { file_group | "default" }
<procedure> : :=
{ database_name.schema_name.stored_procedure_name | schema_name.stored_procedure_name | stored_procedure_name }
<queue_rebuild_options> : :=
{
( MAXDOP = max_degree_of_parallelism )
}
Arguments
database_name (tárgy)
Az adatbázis neve, amely tartalmazza a sort, amit meg kell változtatni. Ha nincs database_name , ez alapértelmezett az aktuális adatbázisra kerül.
schema_name (tárgy)
Ez annak a sémának a neve, amelyhez az új sor tartozik. Ha nincs schema_name , ez alapértelmezett sémát követi a jelenlegi felhasználó számára.
queue_name
A sorban lévő név változtatásra kerül.
STATUS (Sor)
Megadja, hogy a sor elérhető-e (ON) vagy nem elérhető (KIKAPCSOLVA). Ha a sor nem elérhető, nem lehet üzenetet hozzáadni vagy eltávolítani a sorból.
MEGTARTÁS
Megadja a sorban lévő megtartási beállítást. Ha MEGTARTÁS = BE, akkor az összes üzenet, amelyet ezen a sorban keresztül küldtek vagy kaptak, a beszélgetések végéig megmaradnak a sorban. Ez lehetővé teszi, hogy az üzeneteket auditálási célokra megőrizzed, vagy kompenzáló tranzakciókat hajtson végre, ha hiba történik
Note
A RETENTION = ON beállítása csökkentheti a teljesítményt. Ezt a beállítást csak akkor szabad használni, ha az alkalmazáshoz szükséges szolgáltatási szint megállapodás teljesítéséhez.
AKTIVÁLÁS
Megadja az információt a tárolt eljárásról, amely aktiválódik a sorba érkező üzenetek feldolgozására.
ÁLLAPOT (Aktiválás)
Megadja, hogy a sor aktiválja-e a tárolt eljárást. Ha STATUS = ON, a sor elindítja a PROCEDURE_NAME-vel megadott tárolt eljárást, amikor a jelenleg futó eljárások száma kevesebb, mint MAX_QUEUE_READERS, és amikor az üzenetek gyorsabban érkeznek a sorba, mint a tárolt eljárások üzeneteket kapnak. Ha a STATUS = KIKAPCSOLVA, a sor nem aktiválja a tárolt eljárást.
ÚJJÁÉPÍTÉS [ A <queue_rebuild_options> ]
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
Újraépíti az összes indexet a sorban lévő belső táblán. Használd ezt a képességet, ha nagy terhelés miatt töredékes problémákat tapasztalsz. A MAXDOP az egyetlen támogatott sor-újraépítési lehetőség. Az REBUILD mindig offline művelet.
SZERVEZD ÁT [ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
Rendezd át az összes indexet a sorban lévő belső táblán.
Ellentétben a REORGANezettel a felhasználói táblákon, a REORGANÎZE-t egy sorban mindig offline műveletként végzik, mert az oldalszintű zárak kifejezetten le vannak tiltva a sorokban.
Tip
Az index fragmentációval kapcsolatos általános iránymutatásként, ha a fragmentáció 5% és 30%között van, szervezze át az indexet. Ha a töredékesség 30%feletti , építse fel az indexet. Ezek a számok azonban csak általános iránymutatásként szolgálnak, mint kiindulópontot a környezetedhez. Az index fragmentáció mértékének meghatározásához használjuk a sys.dm_db_index_physical_stats (Transact-SQL) - lásd a cikk G példáját a cikkben.
ÁTHELYEZÉS { file_group | "alapértelmezett" }
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
Áthelyezi a sorban lévő belső táblát (az indexeivel együtt) egy felhasználó által megadott fájlcsoportba. Az új fájlcsoport nem lehet csak olvasható.
PROCEDURE_NAME = <eljárás>
Megadja a tárolt eljárás nevét, amelyet aktiválni kell, amikor a sorban feldolgozandó üzenetek vannak. Ennek az értéknek SQL Server azonosítónak kell lennie.
database_name (eljárás)
Az adatbázis neve, amely tartalmazza a tárolt eljárást.
schema_name (eljárás)
Ez a séma neve, amely a tárolt eljárást birtokolja.
stored_procedure_name
Ez a tárolt eljárás neve.
MAX_QUEUE_READERS =max_reader
Megadja az aktiválás tárolt eljárásának maximális példányszámát, amelyen egyszerre indul a sor egyszerre.
Az max_readers értékének 0 és 32767 között kell lennie.
EXECUTE AS
Megadja az SQL Server adatbázis felhasználói fiókját, amelyen az aktiválási eljárás tárolt eljárás fut. Az SQL Server-nek képesnek kell lennie ellenőrizni ennek a felhasználónak a jogosultságait, amikor a sor aktiválja a tárolt eljárást. Windows domain felhasználó esetén az SQL Server-nek csatlakoznia kell a domainhez, és képesnek kell lennie a megadott felhasználó jogosultságainak validálására, amikor az eljárás aktiválódik vagy az aktiválás meghiúsul. Egy SQL Server felhasználó esetén a szerver mindig ellenőrizheti a jogosultságokat.
SELF
Megadja, hogy a tárolt eljárás a jelenlegi felhasználóként fut le. (Az adatbázis fő végrehajtja ezt ALTER QUEUE az utasítást.)
"user_name"
Az a felhasználó neve, akinek a tárolt eljárás végrehajtható. user_name érvényes SQL Server felhasználónak kell lennie, amely SQL Server azonosítóként van megadva. A jelenlegi felhasználónak IMPERSONATE engedélyt kell biztosítania a megadott user_name számára.
TULAJDONOS
Megadja, hogy a tárolt eljárás a sor tulajdonosaként fut le.
DROP
Törli az összes aktiválási információt, ami a sorhoz kapcsolódik.
POISON_MESSAGE_HANDLING
Megadja, hogy a mérgező üzenetkezelés engedélyezett-e. Az alapértelmezett érték be van kapcsolva.
Az a sor, amelynek mérgező üzenetkezelése OFF-ra van állítva, nem lesz letiltva öt egymást követő tranzakcióvisszafordítás után. Ez lehetővé teszi, hogy az alkalmazás egyedi mérgező üzenetkezelő rendszert definiáljon.
Remarks
Ha egy meghatározott aktiválási tárolt eljárással rendelkező sorban üzenetek vannak, az aktiválási státusz KIKAPCSOLTRÓL ON-ra történő módosítása azonnal aktiválja az aktivált tárolt eljárást. Az aktiválási státusz ON-ról KIKAPCSOLÁSRA történő módosítása megakadályozza, hogy a bróker aktiválja a tárolt eljárás példányait, de nem állítja meg a jelenleg futó tárolt eljárás példányait.
Egy sor módosítása, hogy aktiváló tárolt eljárást adjon, nem változtatja meg a sor aktiválási állapotát. A sor aktiválási tárolt eljárásának megváltoztatása nem érinti az éppen futó aktivációs tárolt eljárás példányait.
A Service Broker az aktiválási folyamat részeként ellenőrzi a maximális számot a sorban lévő sor olvasói számában. Ezért, ha egy sor módosítja a maximális olvasók számát, a Service Broker azonnal elindíthatja az aktiválási tárolt eljárás több példányát. Egy sor módosítása, hogy csökkentse a maximális olvasószámot, nem befolyásolja az éppen futó aktivációs tárolt eljárás példányait. Azonban a Service Broker nem indít új példányt a tárolt eljárásból, amíg az aktiválás által tárolt eljárás példányainak száma nem csökken a beállított maximális szám alá.
Ha egy sor nem elérhető, a Service Broker üzeneteket tárol azoknak a szolgáltatásoknak, amelyek az adatbázis átviteli sorában használják. A sys.transmission_queue katalógus nézete az átviteli sorra nézi.
Ha egy RECEIVE utasítás vagy GET CONVERSATION GROUP utasítás nem elérhető sorban szerepel, az utasítás Transact-SQL hibával megbukik.
Permissions
A sor módosítására vonatkozó engedély alapértelmezés szerint a sor tulajdonosának, a db_ddladmin vagy db_owner fix adatbázis szerepkörének tagjainak, valamint a rendszergazdálkodó fix szerver szerepének tagjainak szól.
Examples
A. A sorban való elérhetetlenné tétel
A következő példa miatt a ExpenseQueue sor elérhetetlenné válik az üzenetek fogadására.
ALTER QUEUE ExpenseQueue WITH STATUS = OFF ;
B. Az aktiválás tárolási eljárásának megváltoztatása
A következő példa megváltoztatja a sor elindított tárolt eljárását. A tárolt eljárás az a felhasználó fut el, aki futtatta az utasítást ALTER QUEUE .
ALTER QUEUE ExpenseQueue
WITH ACTIVATION (
PROCEDURE_NAME = new_stored_proc,
EXECUTE AS SELF) ;
C. A sorolvasók számának megváltoztatása
A következő példa a 7 Service Broker által elindított maximális tárolt eljárás példányainak számát állítja be ehhez a sorhoz.
ALTER QUEUE ExpenseQueue WITH ACTIVATION (MAX_QUEUE_READERS = 7) ;
D. Az aktiválási tárolt eljárás és a EXECUTE AS fiók megváltoztatása
A következő példa megváltoztatja a Service Broker által elindított tárolt eljárást. A tárolt eljárás a felhasználó SecurityAccountáltal fut le .
ALTER QUEUE ExpenseQueue
WITH ACTIVATION (
PROCEDURE_NAME = AdventureWorks2022.dbo.new_stored_proc ,
EXECUTE AS 'SecurityAccount') ;
E. A sor beállítása, hogy üzeneteket tartson fenn
A következő példa beállítja a sor üzenetek megtartását. A sor megőrzi az összes üzenetet, amelyet a sorban lévő szolgáltatásokhoz vagy azoktól küldtek, amíg az üzenetet tartalmazó beszélgetés véget nem ér.
ALTER QUEUE ExpenseQueue WITH RETENTION = ON ;
F. Az aktiválás eltávolítása a sorból
A következő példa eltávolítja az összes aktiválási információt a sorból.
ALTER QUEUE ExpenseQueue WITH ACTIVATION (DROP) ;
G. Sorindexek újraépítése
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
A következő példa újraépíti a sorindexeket:
ALTER QUEUE ExpenseQueue REBUILD WITH (MAXDOP = 2)
H. Queue indexek újraszervezése
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
Az alábbi példa átszervezi a sorindexeket
ALTER QUEUE ExpenseQueue REORGANIZE
I: A sorban belüli tábla áthelyezése egy másik fájlcsoportba
Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
ALTER QUEUE ExpenseQueue MOVE TO [NewFilegroup]
Lásd még
CREATE QUEUE (Transact-SQL)
DROP QUEUE (Transact-SQL)
ESEMÉNYADATOK (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)