Verwenden von Parametern in einer Instanzkonfigurationsdatei

Wenn Sie eine Notification Services-Instanz mithilfe einer XML-Instanzkonfigurationsdatei (Instance Configuration File, ICF) konfigurieren, können Sie Parameter verwenden, um die Sicherheit, Portierbarkeit und eine einfache Aktualisierung der ICF zu gewährleisten. Sie können auch Werte aus der ICF an Anwendungsdefinitionsdateien (Application Definition Files, ADFs) übergeben.

Wenn Sie eine Notification Services-Instanz programmgesteuert konfigurieren, sind keine Parameterobjekte vorhanden. Sie können Variablen verwenden, wenn Sie ein Stelle zur Aktualisierung eines Wertes für die Instanzdefinition und Anwendungsdefinitionen verwenden möchten.

Notification Services-Parameter

Notification Services ermöglicht es Ihnen, Parameter an Stelle von Elementwerten zu verwenden. Das Verwenden von Parametern kann aus verschiedenen Gründen vorteilhaft sein:

  • Sie können vertrauliche Daten außerhalb der ICF und ADFs speichern und die Werte nur dann bereitstellen, wenn die Instanz erstellt oder aktualisiert wird.
  • Sie können einen Parameterwert einmal definieren und dann in mehreren Elementen verwenden.
  • Sie können Instanz- und Anwendungsaktualisierungen vereinfachen, indem Sie Werte, die wahrscheinlich geändert werden, an einer Stelle platzieren.

Ein zu ersetzender Parameter sieht innerhalb einer ICF oder ADF wie folgt aus: %MyParam%. Das ist der von Prozentzeichen umgebene Parametername. Beim Definieren eines Wertes für den Parameter geben Sie den Namen (MyParam) und einen Wert für den Parameter an, z. B. MyServer.

Beim Erstellen oder Aktualisieren der Instanz wird der Parameter (%MyParam%) von Notification Services durch den von Ihnen angegebenen Wert (MyServer) ersetzt.

Für die ICF können Sie Parameterwerte im ParameterDefaults-Element, in der nscontrol-Befehlszeile oder in den SQL Server Management Studio-Dialogfeldern bereitstellen, die zum Erstellen oder Aktualisieren der Instanz verwendet werden. SQL Server Management Studio lässt jedoch nur ein der Stufe der Parameterersetzung zu. Parameter A kann beispielsweise nur dann auf Parameter B verweisen, wenn B nicht auf einen anderen Parameter verweist.

Definieren von Standardwerten für Parameter in der ICF

Sie können Werte für ICF-Parameter im ParameterDefaults-Element der ICF bereitstellen. Die Parameternamen und -werte werden dann von Notification Services aus diesem Element gelesen, und die entsprechenden Parameter werden durch die angegebenen Werte ersetzt.

Sie können z. B. einen Parameter für einen Dateipfad verwenden, der von mehreren Elementen verwendet wird. Sie können BaseDirPath als Namen für diesen Parameter festlegen und die folgenden Elemente in der ICF erstellen:

<BaseDirectoryPath>%BaseDirPath%\Stock</BaseDirectoryPath>
...
<AssemblyName>%BaseDirPath%\SMS.dll</AssemblyName>

Dann können Sie einen Wert für %BaseDirPath% wie folgt bereitstellen:

<ParameterDefaults>
    <Parameter>
        <Name>BaseDirPath</Name>
        <Value>C:\NS</Value>
    </Parameter>
</ParameterDefaults>

Wenn Sie die Instanz erstellen oder aktualisieren, wird jedes Auftreten von %BaseDirPath% in der ICF von Notification Services durch die Zeichenfolge "C:\NS" ersetzt. Dieses Verfahren entspricht logisch dem Verwenden der folgenden Elemente in der ICF:

<BaseDirectoryPath>C:\NS\Stock</BaseDirectoryPath>
...
<AssemblyName>C:\NS\SMS.dll</AssemblyName>

Definieren von Parameterwerten beim Erstellen und Aktualisieren einer Instanz

Wenn Sie Parameterwerte nicht in der ICF speichern möchten, können Sie die Werte beim Erstellen oder Aktualisieren der Instanz oder in Umgebungsvariablen bereitstellen. Wenn Sie das nscontrol-Befehlszeilenprogramm zum Erstellen der Instanz verwenden, können Sie z. B. Werte für den Benutzernamen und das Kennwort in der Befehlszeile bereitstellen.

In diesem Beispiel sind ein Benutzername und ein Kennwort für den Übermittlungskanal erforderlich. Sie möchten diese Werte nicht in der ICF speichern. Daher verwenden Sie Parameter:

<DeliveryChannel>
    <DeliveryChannelName>MyChannel</DeliveryChannelName>
    <ProtocolName>MyProtocol</ProtocolName>
    <Arguments>
        <Argument>
            <Name>UserName</Name>
            <Value>%User%</Value>
        </Argument>
        <Argument>
            <Name>Password</Name>
            <Value>%Pwd%</Value>
        </Argument>
    </Arguments>
</DeliveryChannel>

Sie können dann Werte für die Parameter in der Befehlszeile bereitstellen:

nscontrol create -in "C:\NS\InstanceConfig.xml" User=<userName>
    Pwd=<enterStrongPasswordHere>

Außerdem können Sie Parameterwerte bereitstellen, wenn Sie die Instanz mithilfe von SQL Server Management Studio erstellen oder aktualisieren.

Rangfolge von Parameterwerten

Das Definieren eines Wertes für diesen Parameter ist auch im Abschnitt ParameterDefaults möglich, und zwar als Umgebungsvariable, sowie beim Erstellen oder Aktualisieren der Instanz. Aus diesem Grund ist eine Rangfolge zwischen Parameterwerten festgelegt:

  • Parameterwerte, die beim Erstellen oder Aktualisieren der Instanz bereitgestellt werden, setzen die Werte außer Kraft, die in Umgebungsvariablen und im Abschnitt ParameterDefaults bereitgestellt sind.
  • Umgebungsvariablen setzen ParameterDefaults-Werte außer Kraft.
  • ParameterDefaults-Werte weisen die niedrigste Priorität auf.

Übergeben von Parametern an eine ADF

Sie können innerhalb der ICF das Application-Element verwenden, um eine von der Instanz gehostete Anwendung zu beschreiben. Das Application-Element weist ein untergeordnetes Parameters-Element auf. Verwenden Sie dieses untergeordnete Element, um Parameterwerte für die ADF zu definieren.

In der ADF muss z. B. definiert werden, auf welchen Servern die gehosteten Ereignisanbieter, der Generator und die Verteiler ausgeführt werden. Dies geschieht mithilfe der SystemName-Elemente in der ADF. Wenn alle Komponenten auf einem Server ausgeführt werden und Sie den Servernamen beim Erstellen der Instanz definieren möchten, können Sie Parameter in der ADF verwenden:

<HostedProvider>
    ...
    <SystemName>%ApplicationServer%</SystemName>
...
<Generator>
    <SystemName>%ApplicationServer%</SystemName>
...
<Distributor>
    <SystemName>%ApplicationServer%</SystemName>

Sie können dann einen Wert für diesen Parameter im Application-Element der ICF definieren:

<Application>
    ...
    <Parameters>
        <Parameter>
            <Name>ApplicationServer</Name>
            <Value>Server01</Value>
        </Parameter>
    </Parameters>
</Application>

Wenn Sie die Instanz erstellen, wird von Notification Services jedes Vorkommen von %ApplicationServer% in der ADF durch den Server01-Wert ersetzt.

Darüber hinaus können Sie Parameterwerte für die ADF im ParameterDefaults-Element der ADF bereitstellen.

Sie können diese Ersetzungsmethoden bei Bedarf kombinieren. Falls Sie z. B. einen Parameter wie %AppServer% für den ApplicationServer-Wert verwenden möchten, können Sie einen Wert für %AppServer% an der Befehlszeile bereitstellen.

Siehe auch

Konzepte

Angeben des Instanznamens
Angeben des Datenbanksystemnamens
Definieren der Instanzdatenbank
Zuordnen von Anwendungen zu einer Instanz
Definieren von benutzerdefinierten Übermittlungsprotokollen
Definieren von Übermittlungskanälen
Konfigurieren der Argumentverschlüsselung
Angeben der Instanzversion und des Instanzverlaufs
Verwenden von Parametern in einer Anwendungsdefinitionsdatei (Application Definition File, ADF)

Andere Ressourcen

Konfigurieren von Instanzen von Notification Services
ParameterDefaults Element (ICF)
Parameters Element (ICF)
ParameterDefaults Element (ADF)
nscontrol (Dienstprogramm)
Definieren von Notification Services-Anwendungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005