Inventory Tracker (ejemplo)

Actualizado: 17 de julio de 2006

El ejemplo Inventory Tracker muestra cómo usar acciones de condición para permitir que los suscriptores definan sus propias cláusulas de consulta para sus suscripciones.

Escenario

Desea permitir que los empleados de su empresa reciban una notificación cuando cambien los niveles de inventario. Dado que diferentes personas buscan datos diferentes, como inventario bajo, inventario alto, o cambios significativos de inventario, desea permitir que las personas creen sus propias condiciones para sus suscripciones.

En este ejemplo, los suscriptores Stephanie y David crean una suscripción cada uno. La suscripción de Stephanie especifica que desea que le notifiquen cuando el inventario de ensamblado final del producto "Road-250 Black, 48" sea de 35 o menos unidades. La suscripción de David especifica que desea que le notifiquen cuando el inventario de subensamblado del producto "HL Crankarm" sea de 250 unidades o menos.

Los eventos se agregan al sistema mediante un desencadenador de actualización en la tabla Production.Inventory de AdventureWorks. El desencadenador somete eventos a la aplicación Inventory Tracker siempre que se actualizan los datos del inventario. Al final del cuanto del generador en el que llegan los eventos, la aplicación Inventory Tracker activa las normas que comparan los datos de eventos con los datos de suscripción y generan notificaciones.

Las notificaciones se envían por correo electrónico a los suscriptores.

Lenguajes

XML, XSLT, Transact-SQL, Microsoft Visual C# o Microsoft Visual Basic

Características

El ejemplo Inventory Tracker usa las siguientes características de Notification Services.

Área de aplicación Características

Clase de evento

Cola de eventos básica, sin crónica.

Clase de suscripción

Reglas de suscripción que están controladas por eventos y usan acciones de condición para admitir lógica de suscripción flexible. Sin crónica.

Clase de notificación

Entrega de resumen.

Proveedores de eventos

Proveedor de eventos no alojado, implementado como un desencadenador de actualizaciones en la base de datos AdventureWorks.

Formateadores de contenido

Formateador de contenido XSLT.

Protocolos de entrega

Protocolos de entrega File y SMTP.

Motor de Notification Services

Servicio de Microsoft Windows, creado al registrar la instancia.

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que esté instalado el siguiente software:

  • Microsoft SQL Server 2005, incluidos los siguientes componentes:

  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. Puede obtener .NET Framework SDK sin cargo. Vea Instalar .NET Framework SDK.

  • Servicio de Protocolo simple de transferencia de correo (SMTP), que es un componente de Servicios de Internet Information Server (IIS). En Microsoft Windows Server 2003, SMTP no se instala de forma predeterminada con IIS. Vea la documentación de IIS para obtener instrucciones sobre cómo instalar y usar el servicio SMTP.

    [!NOTA] Antes de ejecutar este ejemplo, compruebe que el servicio de SMTP esté detenido. Al detener el servicio de SMTP, los mensajes se mantienen en el servidor en lugar de permitir que el servicio SMTP intente enviarlos a suscriptores inexistentes.

Generar el ejemplo

Para generar la instancia, deberá hacer lo siguiente:

  • Crear un inicio de sesión de SQL Server para evaluar reglas.
  • Crear la instancia de Notification Services.
  • Registrar la instancia de Notification Services.
  • Otorgar permisos de base de datos al servicio de Windows.
  • Crear desencadenadores y otorgar permisos de base de datos a la cuenta de evaluación de reglas.

Los siguientes procedimientos muestran cómo realizar cada una de estas tareas para el ejemplo InventoryTracker.

Paso 1: crear una cuenta de inicio de sesión de SQL Server para la evaluación de reglas

  1. Abra SQL Server Management Studio y conéctese a una instancia de SQL Server.

    Cuando una aplicación tiene reglas que contienen acciones condicionales, necesita un inicio de sesión para evaluar las condiciones. El uso de este inicio de sesión independiente permite limitar los datos contra los que los suscriptores pueden crear reglas y ayuda a proteger los datos confidenciales.

    Antes de crear la instancia de Notification Services, este inicio de sesión debe existir en el servidor y no en la base de datos. Este ejemplo usa un inicio de sesión con autenticación de SQL Server denominado NSRulesEvaluator. En sus propias aplicaciones, puede usar la autenticación de SQL Server o la autenticación de Windows.

    [!NOTA] Siempre que sea posible, utilice la autenticación de Windows.

  2. En el Explorador de objetos, expanda el nodo Seguridad.

  3. Haga clic con el botón secundario en Inicios de sesión y elija Nuevo inicio de sesión.

  4. Seleccione Autenticación de SQL Server.

    Esta cuenta no se usa para conexiones al servidor. El generador de Notification Services la usa dentro de la instancia del Motor de base de datos para evaluar las condiciones.

  5. En el cuadro Nombre de inicio de sesión, escriba NSRulesEvaluator.

    Escriba la contraseña del inicio de sesión NSRulesEvaluator.

  6. En el cuadro Base de datos, seleccione AdventureWorks.

  7. Haga clic en Aceptar.

    Si aparece un cuadro de diálogo que indica que el inicio de sesión no tiene acceso a la base de datos predeterminada, haga clic en Aceptar. Otorgará permisos de base de datos más adelante en este ejemplo.

Paso 2: crear la instancia de Notification Services

  1. En el Explorador de objetos, haga clic con el botón secundario en Notification Services y seleccione Nueva instancia de Notification Services.

  2. En el cuadro de diálogo Nueva instancia de Notification Services, haga clic en Explorar, vaya a la carpeta InventoryTracker y seleccione el archivo InstanceConfig.xml.

  3. En el cuadro Parámetros, escriba valores para los tres parámetros:

    • SampleDirectory: ruta de acceso de la carpeta raíz del ejemplo Inventory Tracker. La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\.
    • SQLServer: nombre de la instancia del Motor de base de datos.
    • NotificationServicesHost: nombre del servidor que ejecuta Notification Services. Para los ejemplos, debe ser el nombre del equipo local.
  4. Active la casilla de verificación Habilitar la instancia una vez creada.

  5. Haga clic en Aceptar.

  6. Cuando Notification Services haya terminado de crear la instancia, haga clic en Cerrar.

Paso 3: registrar la instancia de Notification Services

  1. En el Explorador de objetos, expanda el nodo de Notification Services, haga clic con el botón secundario en InventoryTrackerInstance, seleccione Tareas y, a continuación, seleccione Registrar.

  2. En el cuadro de diálogo Registrar, active la casilla de verificación Crear servicio de Windows. El servicio de Windows ejecuta la instancia de Notification Services en este equipo.

  3. En Inicio de sesión de servicio, escriba una cuenta de inicio de sesión de Windows y una contraseña. Ésta es la cuenta de Windows con la cual se ejecutará el servicio. Si usa autenticación de Windows para obtener acceso a SQL Server, el servicio de Windows también usará esta cuenta para conectarse a SQL Server.

  4. Para usar autenticación de SQL Server para obtener acceso a SQL Server, seleccione Autenticación de SQL Server en Autenticación y, a continuación, escriba un nombre de inicio de sesión de SQL Server y la contraseña.

    Se recomienda usar la autenticación de Windows.

  5. Haga clic en Aceptar.

  6. Cuando Notification Services haya terminado de registrar la instancia, haga clic en Cerrar.

[!NOTA] Si está implementando un ejemplo de Notification Services con una cuenta que es el propietario de la base de datos o un administrador del sistema, no tiene que conceder permisos de SQL Server a la cuenta. Conceder estos permisos puede generar un error, que se puede omitir. Al implementar sus propias aplicaciones, debe utilizar cuentas con un menor número de privilegios para mejorar la seguridad.

Paso 4: conceder permisos de base de datos al servicio de Windows

  1. En el Explorador de objetos, expanda Seguridad.

  2. Si debe crear una nueva cuenta de inicio de sesión de base de datos para el servicio de Windows, haga clic con el botón secundario en Inicios de sesión, seleccione Nuevo inicio de sesión y cree la cuenta de Inicio de sesión:

    • Para usar la autenticación de Windows, seleccione Autenticación de Windows y escriba la misma cuenta de Windows que especificó al registrar la instancia.
    • Si debe usar la autenticación de SQL Server, seleccione Autenticación de SQL Server y escriba el mismo nombre de inicio de sesión de SQL Server y la misma contraseña que especificó al registrar la instancia.
  3. Si el inicio de sesión utilizado por el servicio de Windows ya tiene acceso a SQL Server, haga clic con el botón secundario en el inicio de sesión y seleccione Propiedades.

  4. En el panel izquierdo del cuadro de diálogo Inicio de sesión, seleccione Asignación de usuarios.

  5. Otorgue permisos para la base de datos AdventureWorks:

    1. En el cuadro Usuarios asignados a este inicio de sesión, seleccione AdventureWorks.
    2. En el cuadro Miembros de la función de base de datos para: AdventureWorks, seleccione NSRunService.
  6. Haga clic en Aceptar para aplicar los permisos.

  7. Configure la seguridad para la carpeta Notifications:

    1. Ubique la carpeta Notifications del ejemplo.
    2. Haga clic con el botón secundario en la carpeta Notifications, seleccione Compartir y seguridad y, a continuación, haga clic en la ficha Seguridad.
    3. Haga clic en Agregar y agregue la cuenta usada por el servicio de Windows.
    4. En el cuadro Nombres de grupos o usuarios, seleccione la cuenta que acaba de agregar.
    5. En el cuadro Permisos para, seleccione Escribir.
    6. Haga clic en Aceptar para aplicar los cambios.

Paso 5: configurar desencadenadores de base de datos y conceder permisos de base de datos

  1. En el menú Archivo de SQL Server Management Studio, seleccione Abrir y, a continuación, seleccione Archivo.

  2. En el cuadro de diálogo Archivo, abra SetupInventoryTrackerSample.sql.

    La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

  3. Si aparece el cuadro de diálogo Conectar al motor de base de datos, escriba la información de conexión y, a continuación, haga clic en Conectar.

  4. Presione la tecla F5 para ejecutar las instrucciones de Transact-SQL.

Generar un archivo de clave de nombre seguro

Si aún no ha creado un archivo de clave de nombre seguro, genere este archivo mediante las siguientes instrucciones.

Para generar un archivo de clave de nombre seguro

  1. Abra un símbolo del sistema de Microsoft Visual Studio 2005. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

    -- O bien --

    Abra un símbolo del sistema de Microsoft .NET Framework. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

  2. Use el comando de cambio de directorio (CD) para cambiar el directorio actual a la carpeta donde están instalados los ejemplos.

    [!NOTA] para determinar la carpeta donde se encuentran los ejemplos, haga clic en el botón Inicio, seleccione Todos los programas, Microsoft SQL Server, Documentación y tutoriales y, a continuación, haga clic en el directorio Ejemplos. Si se usó la ubicación de instalación predeterminada, los ejemplos se encontrarán en <unidadDeSistema>:\Archivos de programa\Microsoft SQL Server\100\Ejemplos.

  3. En el símbolo del sistema, ejecute el comando siguiente para generar el archivo de clave:

    sn -k SampleKey.snk

    ms161543.note(es-es,SQL.90).gifImportante:
    Para obtener más información acerca del par de claves de nombre seguro, vea el apartado sobre informes de seguridad de nombres seguros y seguridad en .NET Framework en el centro de desarrollo de .NET de MSDN.

Ejecutar el ejemplo

Para ejecutar el ejemplo, debe hacer lo siguiente:

  • Iniciar la instancia.
  • Agregar suscriptores y suscripciones.
  • Colocar un archivo de XML que contiene eventos.
  • Ver las notificaciones resultantes.

Los siguientes procedimientos indican cómo desarrollar estas tareas y cómo ver las notificaciones obtenidas como resultado.

Paso 1: iniciar la instancia

  1. En el Explorador de objetos, expanda Notification Services.

  2. Haga clic con el botón secundario en InventoryTrackerInstance y, a continuación, seleccione Inicio.

Paso 2: agregar suscriptores y suscripciones

  1. Generar la solución de Visual Studio InventoryTracker o InventoryTracker_VB

    Si está usando Microsoft .NET Framework SDK, haga lo siguiente:

    1. En el menú Inicio, seleccione Todos los programas\Microsoft .NET Framework SDK v2.0 y, a continuación, haga clic en SDK Command Prompt.
    2. Vaya a la carpeta raíz del ejemplo Inventory Tracker. Escriba el siguiente comando para la ubicación predeterminada:
      cd \Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker
    3. Escriba lo siguiente para generar la solución
      [C#]
      msbuild InventoryTracker.sln
      [Visual Basic] 
      msbuild InventoryTracker_VB.sln

    Si está usando Visual Studio 2005, haga lo siguiente:

    1. Abra el archivo de solución que prefiera (InventoryTracker.sln o InventoryTracker_VB.sln).
    2. Presione F6 para generar la solución.
  2. Ejecute AddSubscribers.exe.

    La ubicación predeterminada de este archivo es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscribers\lenguaje\AddSubscribers\bin\Debug.

  3. Ejecute AddSubscriptions.exe.

    C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\lenguaje\AddSubscriptions\bin\Debug.

[!NOTA] En el caso de aplicaciones de producción o si está ejecutando esta aplicación en una cuenta restringida, agregue el inicio de sesión de SQL Server de la aplicación a la función de base de datos NSSubscriberAdmin en las bases de datos de instancia y de aplicación.

Paso 3: desencadenar eventos

  1. En el menú Archivo de SQL Server Management Studio, seleccione Abrir y, a continuación, seleccione Archivo.

  2. En el cuadro de diálogo Archivo, abra UpdateProductInventory.sql.

    La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    Esta secuencia de comandos agrega un desencadenador de actualización a la base de datos AdventureWorks y, a continuación, concede permisos de base de datos al inicio de sesión NSRulesEvaluator.

  3. Si aparece el cuadro de diálogo Conectar al motor de base de datos, escriba la información de conexión y, a continuación, haga clic en Conectar.

Paso 4: ver notificaciones

  1. Espere aproximadamente un minuto para que Notification Services produzca notificaciones.

  2. En el Explorador de Windows, vaya a la carpeta Notifications del ejemplo InventoryTracker. Debe encontrar un archivo denominado FileNotifications.txt, que es el archivo que contiene las notificaciones basadas en archivos.

  3. Vaya a la carpeta donde se colocan los mensajes de correo electrónico. Normalmente es una de las carpetas de C:\Inetpub\mailroot. Según el estado del servidor SMTP, las notificaciones deben estar en la carpeta Pickup o Queue. Si el servicio SMTP se está ejecutando, los mensajes se pueden mover a la carpeta Badmail.

Paso 5: restablecer inventario

  1. En el menú Archivo de SQL Server Management Studio, seleccione Abrir y, a continuación, seleccione Archivo.

  2. En el cuadro de diálogo Archivo, abra ResetProductInventory.sql.

    La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    La secuencia de comandos devuelve la base de datos AdventureWorks a su estado anterior, lo que permite volver a ejecutar el ejemplo.

  3. Si aparece el cuadro de diálogo Conectar al motor de base de datos, escriba la información de conexión y, a continuación, haga clic en Conectar.

Eliminar el ejemplo

Utilice el procedimiento siguiente para eliminar el ejemplo Inventory Tracker.

Para eliminar el ejemplo Inventory Tracker

  1. En el Explorador de objetos de SQL Server Management Studio, abra la carpeta Notification Services.

  2. Haga clic con el botón secundario en InventoryTrackerInstance y a continuación seleccione Detener.

  3. Haga clic con el botón secundario en InventoryTrackerInstance, seleccione Tareas y, a continuación, haga clic en Eliminar del registro.

  4. Haga clic con el botón secundario en InventoryTrackerInstance, seleccione Tareas y, a continuación, haga clic en Eliminar.

Vea también

Otros recursos

Ejemplos de SQL Server Notification Services

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido agregado:
  • Se agregó una nota acerca de la ejecución de ejemplos mediante permisos de propietario de base de datos.

5 de diciembre de 2005

Contenido modificado:
  • Se cambiaron las instrucciones para generar un archivo de clave, incluidos el nombre y la ubicación del archivo.
  • Se agregó información sobre prácticas recomendadas de seguridad para las cuentas de evaluación de reglas.