Share via


SubscriptionClass Constructor (Application, String)

Initializes a new instance of the SubscriptionClass class with a parent Application object and a name.

네임스페이스: Microsoft.SqlServer.Management.Nmo
어셈블리: Microsoft.SqlServer.Smo (in microsoft.sqlserver.smo.dll)

구문

‘선언
Public Sub New ( _
    application As Application, _
    name As String _
)
public SubscriptionClass (
    Application application,
    string name
)
public:
SubscriptionClass (
    Application^ application, 
    String^ name
)
public SubscriptionClass (
    Application application, 
    String name
)
public function SubscriptionClass (
    application : Application, 
    name : String
)

매개 변수

  • application
    The parent Application object for the subscription class.
  • name
    A String, between 1 and 64 characters in length, that specifies the name of the subscription class.

    You cannot change the name. To rename a subscription class, you must remove the subscription class and then add a subscription class that has the new name.

주의

This constructor sets the FileGroup property to the default filegroup.

Subscription class names must conform to Microsoft SQL Server identifier naming conventions and must be unique within the application. For more information about SQL Server identifier naming conventions, see 식별자.

If you update the name, updating the application re-creates the subscription class to which it corresponds. Notification Services renames the existing subscription tables by appending Old to the table name and then creates new tables. Existing subscription table indexes are left unchanged.

If you want to transfer data between the old and new subscription tables, it must be done manually. For more information, see 응용 프로그램 업데이트.

The following examples show a complete subscription class. A subscription class in a real application would probably not use all of the properties shown here, but this shows the available properties and how to define them:

// Create a subscription class
SubscriptionClass flightSubscriptions = 
    new SubscriptionClass(myApplication, "FlightSubscriptions");

flightSubscriptions.FileGroup = "PRIMARY";

// Define subscription class fields
// Define a DeviceName field that cannot be NULL
// Add the field to the end of the field collection
SubscriptionField subDevice = 
    new SubscriptionField(flightSubscriptions, "DeviceName");
subDevice.Type = "nvarchar(255)";
subDevice.TypeModifier = "not null";
flightSubscriptions.SubscriptionFields.Add(subDevice);

// Define a SubscriberLocale field that cannot be NULL
// Add the field to the end of the field collection
SubscriptionField subLocale = 
    new SubscriptionField(flightSubscriptions, "SubscriberLocale");
subLocale.Type = "nvarchar(10)";
subLocale.TypeModifier = "not null";
flightSubscriptions.SubscriptionFields.Add(subLocale);

// Add a GoingTo field and add it at position 2
SubscriptionField subDestination = 
    new SubscriptionField(flightSubscriptions, "GoingTo");
subDestination.Type = "nvarchar(6)";
flightSubscriptions.SubscriptionFields.Add(subDestination, 2);

// Define a LeavingFrom field and add it before the GoingTo field
SubscriptionField subOrgin = 
    new SubscriptionField(flightSubscriptions, "LeavingFrom");
subOrgin.Type = "nvarchar(6)";
flightSubscriptions.SubscriptionFields.Add(subOrgin, "GoingTo");

// Define a Price field and add to the end of the collection
SubscriptionField subPrice = 
    new SubscriptionField(flightSubscriptions, "Price");
subPrice.Type = "float";
flightSubscriptions.SubscriptionFields.Add(subPrice);

// Add an index to the subscription class.
flightSubscriptions.IndexSqlStatements.Add(
    "CREATE INDEX FlightSubscriptionsIndex ON " + 
    "MyAppSchema.FlightSubscriptions ( LeavingFrom, GoingTo )");

// Add a rule to generate basic event-triggered notifications
SubscriptionEventRule flightEventRule = 
    new SubscriptionEventRule(flightSubscriptions, 
    "FlightSubscriptionsEventRule");
flightEventRule.Action = "INSERT INTO FlightNotifications " + 
    "(SubscriberId, DeviceName, SubscriberLocale, " + 
    "LeavingFrom, GoingTo, Price) " + 
    "SELECT S.SubscriberId, S.DeviceName, S.SubscriberLocale, " + 
    "E.LeavingFrom, E.GoingTo, E.Price " + 
    "FROM FlightEvents E, FlightSubscriptions S " + 
    "WHERE     E.LeavingFrom     = S.LeavingFrom " + 
    "AND    E.GoingTo    = S.GoingTo " + 
    "AND    E.Price    < S.Price";
flightEventRule.ActionTimeout = new TimeSpan(0, 1, 0);
flightEventRule.EventClassName = "FlightEvents";
flightSubscriptions.SubscriptionEventRules.Add(flightEventRule);

// Add a rule to generate basic scheduled notifications
SubscriptionScheduledRule flightScheduledRule = 
    new SubscriptionScheduledRule(
    flightSubscriptions, "FlightScheduledRule");
flightScheduledRule.Action = "INSERT INTO FlightNotifications " + 
    "(SubscriberId, DeviceName, SubscriberLocale, " +
    " LeavingFrom, GoingTo, Price) " + 
    " SELECT S.SubscriberId, S.DeviceName, S.SubscriberLocale, " +
    " EC.LeavingFrom, EC.GoingTo, EC.Price " + 
    " FROM FlightEventChronicle EC, FlightSubscriptions S " +
    " WHERE EC.LeavingFrom = S.LeavingFrom " + 
    " AND EC.GoingTo = S.GoingTo " +
    " AND EC.Price < S.Price";
flightScheduledRule.ActionTimeout = new TimeSpan(0, 0, 30);
flightSubscriptions.SubscriptionScheduledRules.Add(
    flightScheduledRule);

// Add a rule to generate condition-based, event notifications
SubscriptionConditionEventRule flightConditionEventRule = 
    new SubscriptionConditionEventRule(
    flightSubscriptions, "FlightConditionEventRule");
flightConditionEventRule.EventClassName = "FlightEvents";
flightConditionEventRule.ActionTimeout = new TimeSpan(0, 2, 0);
flightConditionEventRule.SqlLoginName = "MyLowPrivLogin";
flightConditionEventRule.SqlUserName = "MyLowPrivUser";
flightConditionEventRule.InputTypeName = "FlightEvents";
flightConditionEventRule.InputTypeSchema = "MyAppSchema";
flightConditionEventRule.SqlExpression =
    "INSERT INTO MyAppSchema.FlightNotifications (SubscriberId, " +
    "DeviceName, SubscriberLocale, LeavingFrom, GoingTo, Price) " +
    "SELECT [Subscription.SubscriberId], [Subscription.DeviceName], " +
    "[Subscription.SubscriberLocale], " +
    "[Input.LeavingFrom], [Input.GoingTo], [Input.Price] " +
    "FROM MyAppSchema.FlightConditionEventRule;";
flightSubscriptions.SubscriptionConditionEventRules.Add(
    flightConditionEventRule);

// Add a rule to generate condition-based, scheduled notifications
SubscriptionConditionScheduledRule flightConditionScheduledRule = 
    new SubscriptionConditionScheduledRule(
    flightSubscriptions, "FlightConditionScheduledRule");
flightConditionScheduledRule.ActionTimeout = 
    new TimeSpan(0, 2, 0);
flightConditionScheduledRule.SqlLoginName = "MyLowPrivLogin";
flightConditionScheduledRule.SqlUserName = "MyLowPrivUser";
flightConditionScheduledRule.InputTypeName = "FlightEventChronicle";
flightConditionScheduledRule.InputTypeSchema = "MyAppSchema";
flightConditionScheduledRule.SqlExpression =
    "INSERT INTO MyAppSchema.FlightNotifications (SubscriberId, " +
    "DeviceName, SubscriberLocale, LeavingFrom, GoingTo, Price) " +
    "SELECT [Subscription.SubscriberId], " +
    "[Subscription.DeviceName], [Subscription.SubscriberLocale], " +
    "[Input.LeavingFrom], [Input.GoingTo], [Input.Price] " +
    "FROM MyAppSchema.FlightConditionScheduledRule;";
flightSubscriptions.SubscriptionConditionScheduledRules.Add(
    flightConditionScheduledRule);

// Define a chronicle for the subscription class
SubscriptionChronicle sc1 = new SubscriptionChronicle(
    flightSubscriptions, "FlightSubChronicle");
sc1.SqlStatements.Add(
    "CREATE TABLE MyAppSchema.FlightSubChronicle " + 
    " (SubscriptionId bigint, LeavingFrom nvarchar(6), " + 
    "  GoingTo nvarchar(6), Price float);");
sc1.SqlStatements.Add(
    "CREATE INDEX FlightSubChronicleIndex  " +
    " ON MyAppSchema.FlightSubChronicle " +
    " ( LeavingFrom, GoingTo );");
flightSubscriptions.SubscriptionChronicles.Add(sc1);

// Add the subscription class to the application
myApplication.SubscriptionClasses.Add(flightSubscriptions);
' Create a subscription class
Dim flightSubscriptions As SubscriptionClass = _
    New SubscriptionClass(myApplication, "FlightSubscriptions")

flightSubscriptions.FileGroup = "PRIMARY"

' Define subscription class fields
' Define a DeviceName field that cannot be NULL
' Add the field to the end of the field collection
Dim subDevice As SubscriptionField = _
    New SubscriptionField(flightSubscriptions, "DeviceName")
subDevice.Type = "nvarchar(255)"
subDevice.TypeModifier = "not null"
flightSubscriptions.SubscriptionFields.Add(subDevice)

' Define a SubscriberLocale field that cannot be NULL
' Add the field to the end of the field collection
Dim subLocale As SubscriptionField = _
    New SubscriptionField(flightSubscriptions, _
    "SubscriberLocale")
subLocale.Type = "nvarchar(10)"
subLocale.TypeModifier = "not null"
flightSubscriptions.SubscriptionFields.Add(subLocale)

' Add a GoingTo field and add it at position 2
Dim subDestination As SubscriptionField = _
    New SubscriptionField(flightSubscriptions, "GoingTo")
subDestination.Type = "nvarchar(6)"
flightSubscriptions.SubscriptionFields.Add(subDestination, 2)

' Define a LeavingFrom field and add it before the GoingTo field
Dim subOrgin As SubscriptionField = _
    New SubscriptionField(flightSubscriptions, "LeavingFrom")
subOrgin.Type = "nvarchar(6)"
flightSubscriptions.SubscriptionFields.Add(subOrgin, "GoingTo")

' Define a Price field and add to the end of the collection
Dim subPrice As SubscriptionField = _
    New SubscriptionField(flightSubscriptions, "Price")
subPrice.Type = "float"
flightSubscriptions.SubscriptionFields.Add(subPrice)

' Add an index to the subscription class to help improve performance
flightSubscriptions.IndexSqlStatements.Add( _
    "CREATE INDEX FlightSubscriptionsIndex ON " + _
    "MyAppSchema.FlightSubscriptions ( LeavingFrom, GoingTo )")

' Add a rule to generate basic event-triggered notifications
Dim flightEventRule As SubscriptionEventRule = _
    New SubscriptionEventRule(flightSubscriptions, _
        "FlightSubscriptionsEventRule")
flightEventRule.Action = _
    "INSERT INTO FlightNotifications " + _
    "(SubscriberId, DeviceName, SubscriberLocale, " + _
    "LeavingFrom, GoingTo, Price) " + _
    "SELECT S.SubscriberId, S.DeviceName, S.SubscriberLocale, " + _
    "E.LeavingFrom, E.GoingTo, E.Price " + _
    "FROM FlightEvents E, FlightSubscriptions S " + _
    "WHERE E.LeavingFrom = S.LeavingFrom " + _
    "AND E.GoingTo = S.GoingTo " + _
    "AND E.Price < S.Price"
flightEventRule.ActionTimeout = New TimeSpan(0, 1, 0)
flightEventRule.EventClassName = "FlightEvents"
flightSubscriptions.SubscriptionEventRules.Add(flightEventRule)

' Add a rule to generate basic scheduled notifications
Dim flightScheduledRule As SubscriptionScheduledRule = _
    New SubscriptionScheduledRule(flightSubscriptions, _
        "FlightScheduledRule")
flightScheduledRule.Action = _
    "INSERT INTO FlightNotifications " + _
    "(SubscriberId, DeviceName, SubscriberLocale, " + _
    "LeavingFrom, GoingTo, Price) " + _
    "SELECT S.SubscriberId, S.DeviceName, S.SubscriberLocale,  " + _
    "EC.LeavingFrom, EC.GoingTo, EC.Price " + _
    "FROM FlightEventChronicle EC, FlightSubscriptions S " + _
    "WHERE EC.LeavingFrom = S.LeavingFrom " + _
    "AND EC.GoingTo = S.GoingTo " + _
    "AND EC.Price < S.Price"
flightScheduledRule.ActionTimeout = New TimeSpan(0, 0, 30)
flightSubscriptions.SubscriptionScheduledRules.Add( _
    flightScheduledRule)

' Add a rule to generate condition-based, event notifications
Dim flightConditionEventRule As _
    SubscriptionConditionEventRule = _
    New SubscriptionConditionEventRule( _
    flightSubscriptions, "FlightConditionEventRule")
flightConditionEventRule.EventClassName = "FlightEvents"
flightConditionEventRule.ActionTimeout = New TimeSpan(0, 2, 0)
flightConditionEventRule.SqlLoginName = "MyLowPrivLogin"
flightConditionEventRule.SqlUserName = "MyLowPrivUser"
flightConditionEventRule.InputTypeName = "FlightEvents"
flightConditionEventRule.InputTypeSchema = "MyAppSchema"
flightConditionEventRule.SqlExpression = _
 "INSERT INTO MyAppSchema.FlightNotifications " + _
 "(SubscriberId, DeviceName, SubscriberLocale, LeavingFrom, " + _
 "GoingTo, Price) SELECT [Subscription.SubscriberId], " + _
 "[Subscription.DeviceName], [Subscription.SubscriberLocale], " + _
 "[Input.LeavingFrom], [Input.GoingTo], [Input.Price] " + _
 "FROM MyAppSchema.FlightConditionEventRule;"
flightSubscriptions.SubscriptionConditionEventRules.Add( _
    flightConditionEventRule)

' Add a rule to generate condition-based, scheduled notifications
Dim flightConditionScheduledRule As _
    SubscriptionConditionScheduledRule = _
    New SubscriptionConditionScheduledRule( _
    flightSubscriptions, "FlightConditionScheduledRule")
flightConditionScheduledRule.ActionTimeout = _
    New TimeSpan(0, 2, 0)
flightConditionScheduledRule.SqlLoginName = "MyLowPrivLogin"
flightConditionScheduledRule.SqlUserName = "MyLowPrivUser"
flightConditionScheduledRule.InputTypeName = _
    "FlightEventChronicle"
flightConditionScheduledRule.InputTypeSchema = "MyAppSchema"
flightConditionScheduledRule.SqlExpression = _
    "INSERT INTO MyAppSchema.FlightNotifications " + _
 "(SubscriberId, DeviceName, SubscriberLocale, LeavingFrom, " + _
 "GoingTo, Price) SELECT [Subscription.SubscriberId], " + _
 "[Subscription.DeviceName], [Subscription.SubscriberLocale], " + _
 "[Input.LeavingFrom], [Input.GoingTo], [Input.Price] " + _
 "FROM MyAppSchema.FlightConditionScheduledRule;"
flightSubscriptions.SubscriptionConditionScheduledRules.Add( _
    flightConditionScheduledRule)

' Define a chronicle for the subscription class
Dim sc1 As SubscriptionChronicle = New SubscriptionChronicle( _
    flightSubscriptions, "FlightSubChronicle")
sc1.SqlStatements.Add( _
    "CREATE TABLE MyAppSchema.FlightSubChronicle " + _
    "(SubscriptionId bigint, LeavingFrom nvarchar(6), " + _
    "GoingTo nvarchar(6), Price float);")
sc1.SqlStatements.Add( _
    "CREATE INDEX FlightSubChronicleIndex  " + _
    "ON MyAppSchema.FlightSubChronicle " + _
    "( LeavingFrom, GoingTo );")
flightSubscriptions.SubscriptionChronicles.Add(sc1)

' Add the subscription class to the application
myApplication.SubscriptionClasses.Add(flightSubscriptions)

플랫폼

개발 플랫폼

지원되는 플랫폼 목록은 SQL Server 2005 설치를 위한 하드웨어 및 소프트웨어 요구 사항을 참조하십시오.

대상 플랫폼

지원되는 플랫폼 목록은 SQL Server 2005 설치를 위한 하드웨어 및 소프트웨어 요구 사항을 참조하십시오.

참고 항목

참조

SubscriptionClass Class
SubscriptionClass Members
Microsoft.SqlServer.Management.Nmo Namespace

관련 자료

구독 클래스 정의
Application Element (ADF)
SubscriptionClassName Element (ADF)