CREATE ENDPOINT (Transact-SQL)

Область применения: SQL Server

Создает конечные точки и определяет их параметры, включая методы, доступные клиентским приложениям. Сведения о соответствующих разрешениях см. в статье GRANT, предоставление разрешений на конечные точки (Transact-SQL).

Синтаксис CREATE ENDPOINT логически может быть разбит на две части.

  • Первая часть начинается с AS и заканчивается перед предложением FOR.

    В этой части задаются сведения, связанные с транспортным протоколом (TCP), устанавливается номер прослушиваемого порта для конечной точки, а также указывается метод проверки подлинности конечной точки и/или список IP-адресов (при наличии), доступ к конечной точке от которых нужно запретить.

  • Вторая часть начинается с предложения FOR.

    В этой части определяется, какие полезные данные будут поддерживаться конечной точкой. Полезные данные могут иметь один из нескольких поддерживаемых типов: Transact-SQL, Service Broker, зеркальное отображение базы данных. В эту часть также включаются сведения, зависящие от выбранного типа.

Примечание.

Собственные XML-веб-службы (конечные точки SOAP/HTTP) удалены в версии SQL Server 2012 (11.x).

Соглашения о синтаксисе Transact-SQL

Синтаксис

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]  
[ STATE = { STARTED | STOPPED | DISABLED } ]  
AS { TCP } (  
   <protocol_specific_arguments>  
        )  
FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (  
   <language_specific_arguments>  
        )  
  
<AS TCP_protocol_specific_arguments> ::=  
AS TCP (  
  LISTENER_PORT = listenerPort  
  [ [ , ] LISTENER_IP = ALL | ( xx.xx.xx.xx IPv4 address ) | ( '__:__1' IPv6 address ) ]  
  
)  
  
<FOR SERVICE_BROKER_language_specific_arguments> ::=  
FOR SERVICE_BROKER (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
    } ]  
   [ [ , ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
   ]  
   [ [ , ] MESSAGE_FORWARDING = { ENABLED | DISABLED } ]  
   [ [ , ] MESSAGE_FORWARD_SIZE = forward_size ]  
)  
  

<FOR DATABASE_MIRRORING_language_specific_arguments> ::=  
FOR DATABASE_MIRRORING (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
   [ [ [ , ] ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
  
    ]   
   [ , ] ROLE = { WITNESS | PARTNER | ALL }  
)  

Аргументы

endPointName
Назначенное имя создаваемой конечной точки. Используется при обновлении или удалении конечной точки.

AUTHORIZATION login
Указывает правильное имя входа для SQL Server или Windows, которое назначается владельцем только что созданного объекта конечной точки. Если аргумент AUTHORIZATION не указан, по умолчанию владельцем только что созданного объекта становится пользователь, вызывающий инструкцию.

Чтобы назначить владельца при помощи аргумента AUTHORIZATION, вызывающий должен иметь разрешение IMPERSONATE для указанного значения login.

Параметр AUTHORIZATION недоступен в инструкции ALTER ENDPOINT. Владельца можно назначать только в момент создания конечной точки. Чтобы переназначить владение, ознакомьтесь с разделом DROP ENDPOINT (Transact-SQL), а затем вернитесь к этой статье, чтобы повторно создать конечную точку.

STATE = { STARTED | STOPPED | DISABLED }
Состояние конечной точки после ее создания. Если при создании конечной точки состояние не указано, по умолчанию устанавливается значение STOPPED.

STARTED
Конечная точка запущена и активно прослушивает соответствующий порт, ожидая соединений.

ОТКЛЮЧЕНО
Конечная точка отключена. В этом состоянии сервер прослушивает запросы к порту, но возвращает клиенту ошибку.

STOPPED
Конечная точка остановлена. В этом состоянии сервер не прослушивает порт конечной точки и не отвечает ни на какие попытки запроса на использование конечной точки.

Сведения об изменении состояния см. в статье ALTER ENDPOINT (Transact-SQL).

AS { TCP }
Указывает используемый транспортный протокол.

FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING }
Указывает тип передаваемых полезных данных.

В настоящее время не существует аргументов языка Transact-SQL, которые передаются в параметре <language_specific_arguments>.

Параметры протокола TCP

Следующие аргументы относятся только к протоколу TCP.

LISTENER_PORT =порт_прослушивателя
Указывает номер порта протокола TCP/IP, прослушиваемого компонентом Service Broker на предмет соединений. По соглашению используется 5022, но любое число от 1024 до 32767 является допустимым.

LISTENER_IP = ALL | (4-part-ip ) | ( "ip_address_v6" )
Указывает IP-адрес, с которым конечная точка будет ожидать соединения. По умолчанию значение установлено в ALL. Это значит, что средство прослушивания примет соединение с любым верным IP-адресом.

Если зеркальное отображение базы данных настраивается с использованием IP-адреса, а не полного имени домена (ALTER DATABASE SET PARTNER = partner_IP_address или ALTER DATABASE SET WITNESS = witness_IP_address), необходимо указать LISTENER_IP =IP_address вместо LISTENER_IP=ALL при создании конечных точек зеркального отображения.

Параметры SERVICE_BROKER и DATABASE_MIRRORING

Параметры AUTHENTICATION и ENCRYPTION используются, если указан аргумент SERVICE_BROKER или DATABASE_MIRRORING.

Примечание.

Для получения сведений об аргументах, относящихся только к SERVICE_BROKER, см. подраздел «Параметры SERVICE_BROKER» ниже в данном разделе. Для получения сведений о параметрах, относящихся только к DATABASE_MIRRORING, см. статью «Параметры DATABASE_MIRRORING» ниже в данном разделе.

AUTHENTICATION =<authentication_options>
Указывает требования к проверке подлинности TCP/IP для подключений для этой конечной точки. Значение по умолчанию — WINDOWS.

Поддерживаемые методы проверки подлинности включают в себя NTLM, Kerberos или оба этих метода.

Внимание

Все соединения зеркального отображения на экземпляре сервера используют одну конечную точку зеркального отображения базы данных. Любая попытка создания дополнительной конечной точки зеркального отображения баз данных приведет к ошибке.

<authentication_options> ::=

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Указывает, что конечная точка будет подключена с использованием протокола проверки подлинности Windows. Это значение по умолчанию.

Если указать режим авторизации (NTLM или KERBEROS), этот метод всегда будет использоваться в качестве протокола проверки подлинности. Значение по умолчанию NEGOTIATE соответствует тому, что конечная точка будет использовать протокол переговоров Windows для выбора NTLM или Kerberos.

CERTIFICATE certificate_name
Указывает на то, что конечная точка будет проводить проверку подлинности подключений при помощи сертификата, указанного в аргументе certificate_name, для определения идентификатора для авторизации. Противоположная конечная точка должна иметь сертификат с открытым ключом, совпадающим с закрытым ключом указанного сертификата.

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name
Указывает на то, что конечная точка будет производить попытки подключения при помощи проверки подлинности Windows и, в случае неудачи, будет пытаться использовать указанный сертификат.

CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Указывает на то, что конечная точка будет производить попытки подключения при помощи указанного сертификата и, в случае неуспеха, будет пытаться использовать проверку подлинности Windows.

ENCRYPTION = { DISABLED | SUPPORTED | REQUIRED } [ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ]
Указывает, будет ли использоваться шифрование в процессе. По умолчанию значение установлено в REQUIRED.

ОТКЛЮЧЕНО
Указывает на то, что данные, передаваемые через соединение, не будут зашифрованы.

SUPPORTED
Указывает на то, что данные будут зашифрованы только в случае, если у противоположной конечной точки этот аргумент принял значение SUPPORTED или REQUIRED.

ОБЯЗАТЕЛЬНО
Указывает на то, что соединение с этой конечной точкой должно использовать шифрование. Поэтому для подключения к конечной точке значение аргумента ENCRYPTION противоположной конечной точки должно быть установлено в значение SUPPORTED или значение REQUIRED.

При необходимости можно использовать аргумент ALGORITHM для указания формы шифрования на конечной точке, как показано ниже:

AES
Указывает на то, что конечная точка должна использовать алгоритм AES. Это значение по умолчанию в SQL Server 2016 (13.x) и более поздних версий.

RC4;
Указывает на то, что конечная точка должна использовать алгоритм RC4. Это значение по умолчанию в SQL Server 2014 (12.x) и более ранних версий.

Примечание.

Алгоритм RC4 поддерживается только в целях обратной совместимости. Когда база данных имеет уровень совместимости 90 или 100, новые материалы могут шифроваться только с помощью алгоритмов RC4 или RC4_128. (Не рекомендуется.) Используйте вместо этого более новые алгоритмы, например AES. В SQL Server 2012 (11.x) и более поздних версиях материалы, зашифрованные с помощью RC4 или RC4_128, можно расшифровать на любом уровне совместимости.

AES RC4
Указывает на то, что две конечные точки будут согласовывать алгоритм шифрования, оставляя приоритет за алгоритмом AES.

RC4 AES
Указывает на то, что две конечные точки будут согласовывать алгоритм шифрования, оставляя приоритет за алгоритмом RC4.

Примечание.

Алгоритм RC4 устарел. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого рекомендуется использовать алгоритм AES.

Если обе конечные точки указывают оба алгоритма, но в разной последовательности, то используется та, которая указана на принимающей стороне.

Параметры SERVICE_BROKER

Следующие параметры используются, если указан аргумент SERVICE_BROKER.

MESSAGE_FORWARDING = { ENABLED | DISABLED }
Определяет, будут ли перенаправлены сообщения, полученные конечной точкой и предназначенные для служб, расположенных в других местах.

ВКЛЮЧЕНО
Перенаправляет сообщения, если доступен адрес перенаправления.

ОТКЛЮЧЕНО
Удаляет сообщения, предназначенные для служб, расположенных в других местах. Это значение по умолчанию.

MESSAGE_FORWARD_SIZE =forward_size
Указывает максимальный объем хранилища в мегабайтах для размещения в нем сообщений конечной точки, предназначенных для перенаправления.

Параметры DATABASE_MIRRORING

Следующие параметры используются, если указан аргумент DATABASE_MIRRORING.

ROLE = { WITNESS | PARTNER | ALL }
Указывает роль в зеркальном отображении базы данных или роли, поддерживаемые конечной точкой.

WITNESS
Позволяет конечной точке выполнять роль следящего сервера в процессе зеркального отображения.

Примечание.

Для выпуска SQL Server 2005 Express свидетель является единственным доступным вариантом.

PARTNER
Позволяет конечной точке выполнять роль участника в процессе зеркального отображения.

ВСЕ
Позволяет конечной точке выполнять как роль следящего сервера, так и роль участника в процессе зеркального отображения.

Дополнительные сведения об этих ролях см. в статье Зеркальное отображение базы данных (SQL Server).

Примечание.

Также для аргумента DATABASE_MIRRORING не определен порт по умолчанию.

Замечания

Инструкции DDL ENDPOINT не могут выполняться внутри пользовательской транзакции. Инструкции ENDPOINT DDL не будут вызывать ошибки даже в случае, если активная транзакция уровня изоляции моментального снимка использует изменяемую конечную точку.

Запросы к объекту ENDPOINT могут быть выполнены следующими пользователями:

  • членами предопределенной роли сервера sysadmin;

  • владельцем конечной точки;

  • пользователями или группами, которым предоставлено разрешение CONNECT на конечную точку.

Разрешения

Требуется разрешение CREATE ENDPOINT или членство в предопределенной роли сервера sysadmin . Дополнительные сведения см. в разделе GRANT, предоставление разрешений на конечные точки (Transact-SQL).

Пример

Создание конечной точки зеркального отображения базы данных

В следующем примере создается конечная точка зеркального отображения базы данных. Конечная точка использует номер порта 7022, хотя допустим любой доступный номер порта. Конечная точка настроена на использование проверки подлинности Windows только по методу Kerberos. Аргумент ENCRYPTION имеет значение SUPPORTED, отличное от значения по умолчанию, для передачи зашифрованных или незашифрованных данных. Конечная точка может выступать как в роли участника, так и в роли следящего сервера.

CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (  
       AUTHENTICATION = WINDOWS KERBEROS,  
       ENCRYPTION = SUPPORTED,  
       ROLE=ALL);  
GO  

Создайте новую конечную точку, указывающую на определенные IPv4-адрес и порт

CREATE ENDPOINT ipv4_endpoint_special
STATE = STARTED
AS TCP (
    LISTENER_PORT = 55555, LISTENER_IP = (10.0.75.1)
)
FOR TSQL ();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO public; -- Keep existing public permission on default endpoint for demo purpose
GRANT CONNECT ON ENDPOINT::ipv4_endpoint_special
TO login_name;

Создайте новую конечную точку, указывающую на определенные IPv6-адрес и порт

CREATE ENDPOINT ipv6_endpoint_special STATE = STARTED AS TCP (
    LISTENER_PORT = 55555,
    LISTENER_IP = ('::1')
)
FOR TSQL();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO PUBLIC;
GRANT CONNECT ON ENDPOINT::ipv6_endpoint_special TO PUBLIC;

См. также

ALTER ENDPOINT (Transact-SQL)
Выбор алгоритма шифрования
DROP ENDPOINT (Transact-SQL)
EVENTDATA (Transact-SQL)