CREATE ROUTE (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Přidává novou trasu do směrovací tabulky pro aktuální databázi. Pro odchozí zprávy Service Broker určuje směrování kontrolou směrovací tabulky v místní databázi. Pro zprávy v konverzacích, které pocházejí z jiné instance, včetně zpráv k přeposílání, Service Broker kontroluje trasy v msdb.

Transact-SQL konvence syntaxe

Syntax

CREATE ROUTE route_name  
[ AUTHORIZATION owner_name ]  
WITH    
   [ SERVICE_NAME = 'service_name', ]  
   [ BROKER_INSTANCE = 'broker_instance_identifier' , ]  
   [ LIFETIME = route_lifetime , ]  
   ADDRESS =  'next_hop_address'  
   [ , MIRROR_ADDRESS = 'next_hop_mirror_address' ]  
[ ; ]  

Arguments

route_name
Je název cesty, kterou je třeba tvořit. Nová trasa je vytvořena v aktuální databázi a vlastní ji princip uvedený v klauzuli AUTHORIZATION . Názvy serverů, databází a schémat nelze specifikovat. route_name musí být platný sysname.

AUTHORIZATION owner_name
Nastaví vlastníka trasy na určeného uživatele nebo roli databáze. owner_name může být jméno jakéhokoliv platného uživatele nebo role, pokud je současný uživatel členem buď role db_owner fixed database, nebo fixního správce serveru. Jinak musí owner_name být jméno aktuálního uživatele, jméno uživatele, ke kterému má aktuální uživatel oprávnění IMPERSONATE, nebo jméno role, ke které aktuální uživatel patří. Pokud je tato klauzule vynechána, trasa patří aktuálnímu uživateli.

WITH
Zavádí klauzule, které definují vytvářenou trasu.

SERVICE_NAME = 'service_name'
Specifikuje název vzdálené služby, na kterou tato trasa odkazuje. service_name musí přesně odpovídat názvu, který vzdálená služba používá. Service Broker používá porovnávání bajtů po bajtech, aby odpovídal service_name. Jinými slovy, srovnání je citlivé na velká písmena a nezohledňuje aktuální kolaci. Pokud je SERVICE_NAME vynechán, tato trasa odpovídá jakémukoli jménu služby, ale má nižší prioritu pro shodu než trasa, která specifikuje SERVICE_NAME. Trasa s názvem služby 'SQL/ServiceBroker/BrokerConfiguration' je cesta ke službě Broker Configuration Notice. Cesta k této službě nemusí specifikovat instanci brokera.

BROKER_INSTANCE = 'broker_instance_identifier'
Specifikuje databázi, která hostuje cílovou službu. Parametr broker_instance_identifier musí být identifikátor instance brokera pro vzdálenou databázi, který lze získat provedením následujícího dotazu ve vybrané databázi:

SELECT service_broker_guid  
FROM sys.databases  
WHERE database_id = DB_ID()  

Když je klauzule BROKER_INSTANCE vynechána, tato trasa odpovídá jakékoli instanci brokera. Trasa, která odpovídá jakékoli instanci brokera, má vyšší prioritu pro shodu než trasy s explicitní instancí brokera, pokud konverzace nespecifikuje instanci brokera. U konverzací, které specifikují instanci brokera, má trasa s instancí brokera vyšší prioritu než trasa, která odpovídá jakékoli instanci brokera.

CELOŽIVOTNÍ= route_lifetime
Specifikuje čas, který v sekundách SQL Server zachová trasu v směrovací tabulce. Na konci životnosti trasa vyprší a SQL Server již trasu při výběru nové konverzace nebere v úvahu. Pokud je tato klauzule vynechána, route_lifetime je NULL a trasa nikdy nevyprší.

ADRESA ='next_hop_address'
Pro SQL Managed Instance musí být lokálníADDRESS.

Specifikuje síťovou adresu pro tuto trasu. next_hop_address specifikuje TCP/IP adresu v následujícím formátu:

TCP://{ dns_name | netbios_name | ip_address } :port_number

Specifikovaný port_number musí odpovídat číslu portu pro Service Broker endpoint instance SQL Server na určeném počítači. To lze získat spuštěním následujícího dotazu ve vybrané databázi:

SELECT tcpe.port  
FROM sys.tcp_endpoints AS tcpe  
INNER JOIN sys.service_broker_endpoints AS ssbe  
   ON ssbe.endpoint_id = tcpe.endpoint_id  
WHERE ssbe.name = N'MyServiceBrokerEndpoint';  

Když je služba hostována v zrcadlené databázi, musíte také specifikovat MIRROR_ADDRESS pro druhou instanci, která hostuje zrcadlenou databázi. Jinak tato trasa nepřechází do zrcadla.

Když trasa specifikuje 'LOKÁLNÍ' pro next_hop_address, zpráva je doručena službě v aktuální instanci SQL Server.

Když trasa specifikuje 'TRANSPORT' pro next_hop_address, síťová adresa je určena na základě síťové adresy v názvu služby. Trasa, která specifikuje 'TRANSPORT', nemusí specifikovat název služby nebo instanci brokera.

MIRROR_ADDRESS ='next_hop_mirror_address'
Specifikuje síťovou adresu pro zrcadlenou databázi s jednou zrcadlenou databází hostovanou na next_hop_address. next_hop_mirror_address specifikuje TCP/IP adresu v následujícím formátu:

TCP://{ dns_name | netbios_name | ip_address } :port_number

Specifikovaný port_number musí odpovídat číslu portu pro Service Broker endpoint instance SQL Server na určeném počítači. To lze získat spuštěním následujícího dotazu ve vybrané databázi:

SELECT tcpe.port  
FROM sys.tcp_endpoints AS tcpe  
INNER JOIN sys.service_broker_endpoints AS ssbe  
   ON ssbe.endpoint_id = tcpe.endpoint_id  
WHERE ssbe.name = N'MyServiceBrokerEndpoint';  

Když je MIRROR_ADDRESS specifikován, trasa musí specifikovat SERVICE_NAME klauzuli a BROKER_INSTANCE klauzuli. Trasa, která specifikuje 'LOKÁLNÍ' nebo 'TRANSPORT' pro next_hop_address , nemusí specifikovat zrcadelní adresu.

Remarks

Směrovací tabulka, která ukládá trasy, je tabulka metadat, kterou lze přečíst prostřednictvím katalogu sys.routes . Tento katalogový pohled lze aktualizovat pouze pomocí příkazů CREATE ROUTE, ALTER ROUTE, a DROP ROUTE .

Ve výchozím nastavení obsahuje směrovací tabulka v každé uživatelské databázi jednu trasu. Tato trasa se jmenuje AutoCreatedLocal. Trasa specifikuje 'LOKÁLNÍ' pro next_hop_address a odpovídá jakémukoli názvu služby a identifikátoru instance brokera.

Když trasa specifikuje 'TRANSPORT' pro next_hop_address, síťová adresa je určena na základě názvu služby. SQL Server dokáže úspěšně zpracovávat názvy služeb začínající síťovou adresou ve formátu platném pro next_hop_address.

Směrovací tabulka může obsahovat libovolný počet tras, které určují stejnou službu, síťovou adresu a identifikátor instance brokera. V tomto případě Service Broker vybírá trasu pomocí postupu navrženého k nalezení nejpřesnější shody mezi informacemi uvedenými v konverzaci a informacemi v směrovací tabulce.

Service Broker neodstraňuje expirované trasy z tabulky směrování. Expirovaná trasa může být aktivována pomocí ALTER ROUTE tohoto výroku.

Trasa nemůže být dočasným objektem. Názvy tras začínající na jsou # povoleny, ale jsou trvalými objekty.

Permissions

Oprávnění pro vytvoření trasy je výchozí pro členy pevných databázových rolí db_ddladmin nebo db_owner a pro správce systému jako pevný server.

Examples

A. Vytvoření TCP/IP trasy pomocí DNS názvu

Následující příklad vytváří trasu ke službě //Adventure-Works.com/Expenses. Trasa specifikuje, že zprávy této službě putují přes TCP na port 1234 na hostiteli identifikovaném DNS jménem www.Adventure-Works.com. Cílový server doručí zprávy po příchodu na instanci brokera identifikovanou jedinečným identifikátorem D8D4D268-00A3-4C62-8F91-634B89C1E315.

CREATE ROUTE ExpenseRoute  
    WITH  
    SERVICE_NAME = '//Adventure-Works.com/Expenses',  
    BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89C1E315',  
    ADDRESS = 'TCP://www.Adventure-Works.com:1234' ;  

B. Vytvoření TCP/IP trasy pomocí NetBIOS názvu

Následující příklad vytváří trasu ke službě //Adventure-Works.com/Expenses. Trasa specifikuje, že zprávy této službě putují přes TCP na port 1234 na hostiteli identifikovaném jménem SERVER02NetBIOS . Po příchodu doručí cílový SQL Server zprávu do databázové instance identifikované jedinečným identifikátorem D8D4D268-00A3-4C62-8F91-634B89C1E315.

CREATE ROUTE ExpenseRoute  
    WITH   
    SERVICE_NAME = '//Adventure-Works.com/Expenses',  
    BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89C1E315',  
    ADDRESS = 'TCP://SERVER02:1234' ;  

C. Vytvoření TCP/IP trasy pomocí IP adresy

Následující příklad vytváří trasu ke službě //Adventure-Works.com/Expenses. Trasa specifikuje, že zprávy této službě putují přes TCP na port 1234 hostitele na IP adrese 192.168.10.2. Po příchodu doručí cílový SQL Server zprávu do instance brokera identifikované jedinečným identifikátorem D8D4D268-00A3-4C62-8F91-634B89C1E315.

CREATE ROUTE ExpenseRoute  
    WITH  
    SERVICE_NAME = '//Adventure-Works.com/Expenses',  
    BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89C1E315',  
    ADDRESS = 'TCP://192.168.10.2:1234' ;  

D. Vytvoření trasy k přeposílacímu makléři

Následující příklad vytváří trasu k forwarding brokeru na serveru dispatch.Adventure-Works.com. Protože název služby ani identifikátor instance brokera nejsou specifikovány, SQL Server používá tuto trasu pro služby, které nemají jinou trasu definovanou.

CREATE ROUTE ExpenseRoute  
    WITH  
    ADDRESS = 'TCP://dispatch.Adventure-Works.com' ;   

E. Vytvoření trasy k místní službě

Následující příklad vytváří trasu ke službě //Adventure-Works.com/LogRequests ve stejné instanci jako trasa.

CREATE ROUTE LogRequests  
    WITH  
    SERVICE_NAME = '//Adventure-Works.com/LogRequests',  
    ADDRESS = 'LOCAL' ;  

F. Vytvoření trasy s danou životností

Následující příklad vytváří trasu ke službě //Adventure-Works.com/Expenses. Životnost trasy je několik 259200 sekund, což odpovídá 72 hodinám.

CREATE ROUTE ExpenseRoute  
    WITH  
    SERVICE_NAME = '//Adventure-Works.com/Expenses',  
    LIFETIME = 259200,  
    ADDRESS = 'TCP://services.Adventure-Works.com:1234' ;  

G. Vytvoření cesty do zrcadlené databáze

Následující příklad vytváří trasu ke službě //Adventure-Works.com/Expenses. Služba je hostována v databázi, která je zrcadlená. Jedna z zrcadlených databází se nachází na adrese services.Adventure-Works.com:1234, a druhá databáze na adrese services-mirror.Adventure-Works.com:1234.

CREATE ROUTE ExpenseRoute  
    WITH  
    SERVICE_NAME = '//Adventure-Works.com/Expenses',  
    BROKER_INSTANCE = '69fcc80c-2239-4700-8437-1001ecddf933',  
    ADDRESS = 'TCP://services.Adventure-Works.com:1234',   
    MIRROR_ADDRESS = 'TCP://services-mirror.Adventure-Works.com:1234' ;  

H. Vytvoření trasy, která používá název služby pro směrování

Následující příklad vytváří trasu, která používá název služby k určení síťové adresy, na kterou má zprávu odeslat. Všimněte si, že trasa, která je určena 'TRANSPORT' jako síťová adresa, má nižší prioritu pro shodu než jiné trasy.

CREATE ROUTE TransportRoute  
    WITH ADDRESS = 'TRANSPORT' ;  

Viz také

ALTER ROUTE (Transact-SQL)
DROP ROUTE (Transact-SQL)
EVENTDATA (Transact-SQL)