Agregar una suscripción

El objeto Subscription presenta propiedades que permiten establecer información de suscripción, como el Id. del suscriptor, un indizador para los campos que define los datos de suscripciones e indica si la suscripción puede generar notificaciones.

El método Add de este objeto escribe esos datos en la base de datos de aplicación y devuelve el SubscriptionId generado por el sistema para la suscripción. El SubscriptionId se almacena como un entero de 64 bits en la base de datos, pero se devuelve a la aplicación como una cadena.

Agregar una suscripción básica

En el ejemplo de código siguiente se muestra cómo utilizar el método Item de la clase Subscription para establecer el valor de los campos de suscripción específicos de la aplicación:

// Create the NSInstance object.
NSInstance testInstance = new NSInstance("Tutorial");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "Weather");

// Create the Subscription object.
Subscription testSubscription =
    new Subscription(testApplication, "WeatherCity");


// Set the properties that describe the subscription record.
testSubscription.Enabled = true;
testSubscription.SubscriberId = "TestUser1";

// Set the subscription data fields (as defined in the ADF),
// using the indexer to set fields by field name.
testSubscription["DeviceName"] = "Work e-mail";
testSubscription["SubscriberLocale"] = "en-US";
testSubscription["City"] = "Shoreline";

// Add the subscription to the database.
testSubscription.Add();

Código adicional para una suscripción programada

Algunas clases de suscripción admiten suscripciones programadas. En las suscripciones programadas, debe proporcionar dos propiedades adicionales para establecer la periodicidad de la programación y la fecha de inicio.

Agregue el código siguiente al ejemplo anterior, antes del método Add, para crear una suscripción programada. La propiedad ScheduleRecurrence configura la suscripción de modo que se procese diariamente. La propiedad ScheduleStart configura la suscripción de modo que se procese en el momento actual de la zona horaria del Pacífico. Para obtener la lista de los códigos de las zonas horarias compatibles, vea Time Zone Codes.

[!NOTA] Los valores de las propiedades ScheduleStart y ScheduleRecurrence de la clase Subscription deben ajustarse al subconjunto de Notification Services de la especificación de interfaz ICalendar. Para obtener más información, vea los temas sobre propiedades.

// Set the recurrence of the subscription.
testSubscription.ScheduleRecurrence = "FREQ=DAILY";

// Set the start date and time of the subscription.
StringBuilder scheduleBuilder = new StringBuilder();
scheduleBuilder.AppendFormat("TZID={0}:{1}{2}{3}T{4}{5}{6}",
    "4",
    DateTime.Now.Year.ToString("D4"),
    DateTime.Now.Month.ToString("D2"),
    DateTime.Now.Day.ToString("D2"),
    DateTime.Now.Hour.ToString("D2"),
    DateTime.Now.Minute.ToString("D2"),
    DateTime.Now.Second.ToString("D2"));
testSubscription.ScheduleStart = scheduleBuilder.ToString();

Agregar una suscripción basada en condiciones

El código siguiente muestra cómo crear una suscripción para una clase de suscripción que utiliza acciones de condición. Las propiedades RuleName y Condition son de la clase Subscription. Los objetos utilizados para definir la condición, como la clase OrCondition, son del espacio de nombres Microsoft.SqlServer.NotificationServices.Rules.

En este ejemplo se muestra cómo crear una suscripción y una condición mediante valores de texto codificados de forma rígida. La interfaz de administración de suscripciones puede proporcionar listas desplegables y cuadros de texto que permitan a los usuarios seleccionar y escribir valores.

// Create the NSInstance object.
NSInstance testInstance =
    new NSInstance("InventoryTrackerInstance");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "InventoryTracker");

// Define subscription properties
Subscription s = new Subscription(testApplication, "InventoryTrackerSubscriptions");
s.SubscriberId = "TestUser1";
s.Enabled = true;
s.RuleName = "InventoryTrackerRule";
s["DeviceName"] = "Work e-mail";
s["SubscriberLocale"] = "en-US";

// Define OrCondition
s.Condition = new OrCondition(
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.GreaterThanOrEqualTo,
        500),
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.LessThanOrEqualTo,
        35)
);

// Add subscription
s.Add();

La condición de la suscripción puede ser un gráfico de objetos completo que combine muchas condiciones AND, OR y NOT, así como diversos tipos de argumentos e incluso otras reglas, mediante objetos LinkLeafCondition.

Ejemplo de interoperabilidad COM

En el ejemplo de código siguiente se muestra cómo utilizar el método SetFieldValue de la clase Subscription para establecer el valor de los campos de suscripción específicos de la aplicación:

[!NOTA] Las suscripciones basadas en condiciones no admiten la interoperabilidad COM.

Dim testInstance, testApplication, testSubscription, subscriptionId

const instanceName = "Tutorial"
const applicationName = "Weather"
const subscriptionClassName = "WeatherCity"

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

' Create the NSApplication object.
set testApplication = WScript.CreateObject( _ 
    "Microsoft.SqlServer.NotificationServices.NSApplication")
testApplication.Initialize (testInstance), applicationName

' Create the Subscription object.
set testSubscription = WScript.CreateObject( _
    "Microsoft.SqlServer.NotificationServices.Subscription")
testSubscription.Initialize (testApplication), subscriptionClassName


' Set the properties that describe the subscription record.
testSubscription.SubscriberId = "TestUser2"
testSubscription.Enabled = true

' Set the subscription data fields 
testSubscription.SetFieldValue "DeviceName", "Work e-mail"
testSubscription.SetFieldValue "SubscriberLocale", "en-US"
testSubscription.SetFieldValue "City", "Anaheim"

' Add the subscription to the database.
subscriptionId = testSubscription.Add

wscript.echo "Subscription added."

Vea también

Conceptos

Crear un objeto de suscripción
Actualizar una suscripción
Eliminar una suscripción
Obtener información de campos de suscripción
Llenar una lista de configuraciones regionales de suscriptor
Llenar una lista de zona horaria

Ayuda e información

Obtener ayuda sobre SQL Server 2005