Планирование автоматических административных задач в агенте SQL Server
В SMO агент SQL Server Agent представлен следующими объектами.
В объекте JobServer есть три коллекции заданий, предупреждений и операторов.
Объект OperatorCollection представляет список пейджеров, адресов электронной почты и операторов net send, на которые можно автоматически отправлять уведомления о событиях с помощью агента Microsoft SQL Server.
Объект AlertCollection представляет список показателей, таких как системные события или условия контроля производительности, которые отслеживаются в SQL Server.
Объект JobCollection немного более сложен. Он представляет список многошаговых задач, которые выполняются по указанным расписаниям. Сведения о шагах и расписании хранятся в объектах JobStep и JobSchedule.
Объекты агента SQL Server находятся в пространстве имен Microsoft.SqlServer.Management.Smo.Agent.
Примеры
Чтобы использовать предоставленный пример кода при создании собственного приложения, необходимо выбрать среду разработки, шаблон программирования и язык программирования. Дополнительные сведения см. в разделах Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET и Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.
В программах, в которых используется агент SQL Server, необходимо включать инструкцию Imports для определения пространства имен Agent. Вставьте инструкцию после других инструкций Imports и перед любыми декларациями в приложении.
Imports Microsoft.SqlServer.Management.Smo Imports Microsoft.SqlServer.Management.Common Imports Microsoft.SqlServer.Management.Smo.Agent
Создание задания с шагами и расписания в Visual Basic .NET
В этом примере кода создается задание с шагами и расписание, после чего выполняется уведомление оператора.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Define an Operator object variable by supplying the Agent (parent JobServer object) and the name in the constructor.
Dim op As [Operator]
op = New [Operator](srv.JobServer, "Test_Operator")
'Set the Net send address.
op.NetSendAddress = "Network1_PC"
'Create the operator on the instance of SQL Agent.
op.Create()
'Define a Job object variable by supplying the Agent and the name arguments in the constructor and setting properties.
Dim jb As Job
jb = New Job(srv.JobServer, "Test_Job")
'Specify which operator to inform and the completion action.
jb.OperatorToNetSend = "Test_Operator"
jb.NetSendLevel = CompletionAction.Always
'Create the job on the instance of SQL Agent.
jb.Create()
'Define a JobStep object variable by supplying the parent job and name arguments in the constructor.
Dim jbstp As JobStep
jbstp = New JobStep(jb, "Test_Job_Step")
jbstp.Command = "Test_StoredProc"
jbstp.OnSuccessAction = StepCompletionAction.QuitWithSuccess
jbstp.OnFailAction = StepCompletionAction.QuitWithFailure
'Create the job step on the instance of SQL Agent.
jbstp.Create()
'Define a JobSchedule object variable by supplying the parent job and name arguments in the constructor.
Dim jbsch As JobSchedule
jbsch = New JobSchedule(jb, "Test_Job_Schedule")
'Set properties to define the schedule frequency, and duration.
jbsch.FrequencyTypes = FrequencyTypes.Daily
jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Minute
jbsch.FrequencySubDayInterval = 30
Dim ts1 As TimeSpan
ts1 = New TimeSpan(9, 0, 0)
jbsch.ActiveStartTimeOfDay = ts1
Dim ts2 As TimeSpan
ts2 = New TimeSpan(17, 0, 0)
jbsch.ActiveEndTimeOfDay = ts2
jbsch.FrequencyInterval = 1
Dim d As Date
d = New Date(2003, 1, 1)
jbsch.ActiveStartDate = d
'Create the job schedule on the instance of SQL Agent.
jbsch.Create()
Создание предупреждения в Visual Basic .NET
В этом примере кода создается предупреждение, которое выдается при определенном состоянии производительности. Состояние указывается в специальном формате:
ObjectName|CounterName|Instance|ComparisionOp|CompValue
Для предупреждающих уведомлений требуется оператор. Для типа Operator необходимо использовать квадратные скобки, потому что operator является ключевым словом в Visual Basic.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Define an Alert object variable by supplying the SQL Agent and the name arguments in the constructor.
Dim al As Alert
al = New Alert(srv.JobServer, "Test_Alert")
'Specify the performance condition string to define the alert.
al.PerformanceCondition = "SQLServer:General Statistics|User Connections||>|3"
'Create the alert on the SQL Agent.
al.Create()
'Define an Operator object variable by supplying the SQL Agent and the name arguments in the constructor.
Dim op As [Operator]
op = New [Operator](srv.JobServer, "Test_Operator")
'Set the net send address.
op.NetSendAddress = "NetworkPC"
'Create the operator on the SQL Agent.
op.Create()
'Run the AddNotification method to specify the operator is notified when the alert is raised.
al.AddNotification("Test_Operator", NotifyMethods.NetSend)
Доступ пользователя к подсистеме с помощью учетной записи-посредника в Visual Basic .NET
В этом примере кода показано, как разрешить пользователю доступ к заданной подсистеме с помощью метода AddSubSystem объекта ProxyAccount.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Declare a JobServer object variable and reference the SQL Agent.
Dim js As JobServer
js = srv.JobServer
'Define a Credential object variable by supplying the parent server and name arguments in the constructor.
Dim c As Credential
c = New Credential(srv, "Proxy_accnt")
'Set the identity to a valid login represented by the vIdentity string variable.
'The sub system will run under this login.
c.Identity = vIdentity
'Create the credential on the instance of SQL Server.
c.Create()
'Define a ProxyAccount object variable by supplying the SQL Agent, the name, the credential, the description arguments in the constructor.
Dim pa As ProxyAccount
pa = New ProxyAccount(js, "Test_proxy", "Proxy_accnt", True, "Proxy account for users to run job steps in command shell.")
'Create the proxy account on the SQL Agent.
pa.Create()
'Add the login, represented by the vLogin string variable, to the proxy account.
pa.AddLogin(vLogin)
'Add the CmdExec subsytem to the proxy account.
pa.AddSubSystem(AgentSubSystem.CmdExec)
'Now users logged on as vLogin can run CmdExec job steps with the specified credentials.
См. также