Заполнение списка каналов доставки

Если приложение поддерживает несколько каналов доставки, например, канал доставки, основанный на электронной почте, и канал доставки, основанный на приложении Windows Messenger, то можно создать список каналов доставки, чтобы подписчики могли создавать устройства подписчика, а затем выбирать эти устройства для отдельных подписок.

В SQL Server 2005 объектная модель служб Notification Services (NMO) предоставляет классы для перечисления свойств экземпляра и приложений. Для перечисления каналов доставки используйте свойство DeliveryChannels экземпляра для получения коллекции каналов доставки, определенных для экземпляра служб Notification Services. Классы NMO находятся в пространстве имен Microsoft.SqlServer.Management.Nmo, расположенных в сборке Microsoft.SqlServer.Smo.

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

Пример управляемого кода

В приведенном ниже примере кода показано использование свойства DeliveryChannels экземпляра для получения коллекции каналов доставки, определенных для экземпляра служб Notification Services:

ms166392.note(ru-ru,SQL.90).gifПримечание.
Для приведенного ниже примера необходима ссылка на сборку Microsoft.SqlServer.Management.Smo. Пространства имен Microsoft.SqlServer.Management.Nmo и Microsoft.SqlServer.Management.Smo находятся в сборке SMO. Для назначения пространств имен классов в данном примере используются псевдонимы пространств имен nmo и smo.

Используйте следующие директивы using при запуске этого примера:

using System;
using Microsoft.SqlServer.NotificationServices;
using nmo = Microsoft.SqlServer.Management.Nmo;
using smo = Microsoft.SqlServer.Management.Smo;

Затем используйте следующий код для перечисления каналов доставки:

// Specify the Database Engine instance that hosts the 
// Notificaiton Services instance and get a reference to 
// the NotificationServices object.
smo.Server server = new smo.Server("MyServer");
nmo.NotificationServices notificationServices = server.NotificationServices;

// Get the Notification Services instance.
nmo.Instance nsinst = notificationServices.Instances ["Tutorial"];

// Get the instance's collection of delivery channels.
nmo.DeliveryChannelCollection dcCollection = nsinst.DeliveryChannels;

// Enumerate the delivery channels.
foreach (nmo.DeliveryChannel dc in dcCollection)
{
    Console.WriteLine(dc.Name);
}

Пример взаимодействия COM

NMO не поддерживает взаимодействие COM. При необходимости использования взаимодействия COM для перечисления каналов доставки необходимо использовать устаревшие классы DeliveryChannel и DeliveryChannelEnumeration из пространства имен Microsoft.SqlServer.NotificationServices для получения коллекции каналов доставки, определенных для экземпляра служб Notification Services:

Dim testInstance, testDeliveryChannelEnumeration
const instanceName = "Tutorial"

' Create the NSInstance object.
set testInstance = WScript.CreateObject( _ 
"Microsoft.SqlServer.NotificationServices.NSInstance")
testInstance.Initialize instanceName

' Create the DeliveryChannelEnumeration object.
set testDeliveryChannelEnumeration = WScript.CreateObject( _ 
"Microsoft.SqlServer.NotificationServices.DeliveryChannelEnumeration")
testDeliveryChannelEnumeration.Initialize (testInstance)

' Step through the enumeration, printing the 
' delivery channel names.
for each channel in testDeliveryChannelEnumeration
    Wscript.Echo "Delivery Channel: ", _ 
        channel.DeliveryChannelName
next

wscript.echo "Done!"

См. также

Основные понятия

Создание объекта SubscriberDevice
Добавление устройства подписчика
Обновление устройства подписчика
Удаление устройства подписчика

Другие ресурсы

NSSubscriberDeviceView

Справка и поддержка

Получение помощи по SQL Server 2005