Занятие 1. Создание целевой базы данных
Добавления: 15 сентября 2007 г.
На этом занятии вы узнаете, как создать целевую базу данных и все целевые объекты Service Broker, не имеющие зависимостей в базе данных инициатора. Выполните эти шаги из копии среды Management Studio, запущенной на том же компьютере, на котором находится целевой экземпляр Database Engine.
Процедуры
Создать конечную точку компонента Service Broker
Скопируйте и вставьте следующий код в окно редактора запросов. Затем выполните этот код, чтобы создать конечную точку компонента Service Broker для данного экземпляра компонента Database Engine. Конечная точка Service Broker определяет сетевой адрес, на который отправляются сообщения Service Broker. Эта конечная точка по умолчанию Service Broker использует TCP-порт 4022 и определяет, что удаленные экземпляры Database Engine будут использовать для отправки сообщений соединения с проверкой подлинности Windows.
Проверка подлинности Windows работает, если оба компьютера находятся в одном домене или в доверенных доменах. Если компьютеры расположены не в доверенных доменах, воспользуйтесь для защиты конечных точек сертификатами безопасности. Дополнительные сведения см. в разделе Как создать сертификаты для безопасности транспорта компонента Service Broker (Transact-SQL).
USE master; GO IF EXISTS (SELECT * FROM master.sys.endpoints WHERE name = N'InstTargetEndpoint') DROP ENDPOINT InstTargetEndpoint; GO CREATE ENDPOINT InstTargetEndpoint STATE = STARTED AS TCP ( LISTENER_PORT = 4022 ) FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS ); GO
Создание целевой базы данных, главного ключа и пользователя
Скопируйте и вставьте следующий код в окно редактора запросов. Измените пароль в инструкции CREATE MASTER KEY. Затем выполните код, чтобы создать целевую базу данных, которая будет использоваться для этого учебника. По умолчанию в новых базах данных включен параметр ENABLE_BROKER. Этот код также создает главный ключ и имя пользователя, которые будут применяться для поддержки шифрования и защиты удаленных соединений.
USE master; GO IF EXISTS (SELECT * FROM sys.databases WHERE name = N'InstTargetDB') DROP DATABASE InstTargetDB; GO CREATE DATABASE InstTargetDB; GO USE InstTargetDB; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<EnterStrongPassword1Here>'; GO CREATE USER TargetUser WITHOUT LOGIN; GO
Создание целевого сертификата
Скопируйте и вставьте следующий код в окно редактора запросов. Измените имя файла, указанное в инструкции BACKUP CERTIFICATE, чтобы оно указывало на папку, расположенную на текущем компьютере. Затем выполните код, чтобы создать целевой сертификат, который будет использоваться для шифрования сообщений. Для указанной папки должны быть заданы разрешения, предотвращающие доступ любых учетных записей, кроме учетной записи Windows текущего пользователя и учетной записи Windows, от которой запущен экземпляр компонента Database Engine. Для занятия 2 необходимо вручную скопировать файл InstTargetCertificate.cer в папку, доступ к которой будет осуществляться из инициирующего экземпляра.
CREATE CERTIFICATE InstTargetCertificate AUTHORIZATION TargetUser WITH SUBJECT = 'Target Certificate', EXPIRY_DATE = N'12/31/2010'; BACKUP CERTIFICATE InstTargetCertificate TO FILE = N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'; GO
Создать типы сообщений
Скопируйте и вставьте следующий код в окно редактора запросов и выполните его, чтобы создать типы сообщений для диалога. Заданные здесь имена и свойства типов сообщений должны быть идентичны тем, которые будут созданы в базе данных InstInitiatorDB на следующем занятии.
CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
Создать контракт
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать контракт для диалога. Заданное здесь имя и свойства контракта должны быть такими же, как в контракте, который будет создан в базе данных InstInitiatorDB на следующем занятии.
CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract] ([//BothDB/ 2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/ 2InstSample/ReplyMessage] SENT BY TARGET ); GO
Создать целевую службу и очередь
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать целевую службу и очередь. Инструкция CREATE SERVICE связывает службу с очередью InstTargetQueue, чтобы все сообщения, отправленные службе, были получены очередью InstTargetQueue. Инструкция CREATE SERVICE также указывает, что использовать службу в качестве целевой могут только диалоги, использующие ранее созданный контракт //BothDB/ 2InstSample/SimpleContract.
CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
Следующие шаги
Успешно созданы базы данных, необходимые для работы с учебником. Затем создается база данных InstInitiatorDB, которая настраивается с помощью объектов, необходимых для поддержки конечной точки инициатора диалога Service Broker. См. раздел Занятие 2. Создание вызывающей базы данных.
См. также
Другие ресурсы
BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
Обеспечение безопасности диалогов компонента Service Broker
Архитектура диалога
Архитектура служб