Создание, изменение и удаление правил
В SMO правила представлены объектом Rule. Правило определяется свойством TextBody, которое является текстовой строкой, содержащей выражение условия, использующее операторы или предикаты, например IN, LIKE или BETWEEN. Правило не может ссылаться на столбцы или другие объекты базы данных. В правило могут входить встроенные функции, не ссылающиеся на объекты базы данных.
Определение в свойстве TextBody должно содержать переменную, ссылающуюся на введенное значение данных. Для представления значения при создании правила можно использовать любое имя или символ, но первым знаком должен быть знак «@».
Пример
Чтобы использовать какой-либо из представленных примеров кода, необходимо выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделах Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET и Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.
Создание, изменение и удаление правила на языке Visual Basic
Данный образец кода показывает, как создать правило, добавить его в столбец, изменить свойства объекта Rule, отсоединить его от столбца и удалить его.
Инструкция Dim для объекта Rule указывается с полным путем к сборке, чтобы избежать неоднозначности с объектом Rule в сборке System.Data.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2008R2 database.
Dim db As Database
db = srv.Databases("AdventureWorks2008R2")
'Declare a Table object variable and reference the Product table.
Dim tb As Table
tb = db.Tables("Product", "Production")
'Define a Rule object variable by supplying the parent database, name and schema in the constructor.
'Note that the full namespace must be given for the Rule type to differentiate it from other Rule types.
Dim ru As Microsoft.SqlServer.Management.Smo.Rule
ru = New Rule(db, "TestRule", "Production")
'Set the TextHeader and TextBody properties to define the rule.
ru.TextHeader = "CREATE RULE [Production].[TestRule] AS"
ru.TextBody = "@value BETWEEN GETDATE() AND DATEADD(year,4,GETDATE())"
'Create the rule on the instance of SQL Server.
ru.Create()
'Bind the rule to a column in the Product table by supplying the table, schema, and
'column as arguments in the BindToColumn method.
ru.BindToColumn("Product", "SellEndDate", "Production")
'Unbind from the column before removing the rule from the database.
ru.UnbindFromColumn("Product", "SellEndDate", "Production")
ru.Drop()
Создание, изменение и удаление правила на языке Visual C#
Данный образец кода показывает, как создать правило, добавить его в столбец, изменить свойства объекта Rule, отсоединить его от столбца и удалить его.
Инструкция Dim для объекта Rule указывается с полным путем к сборке, чтобы избежать неоднозначности с объектом Rule в сборке System.Data.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks2008R2 database.
Database db;
db = srv.Databases["AdventureWorks2008R2"];
//Define a Rule object variable by supplying the parent database, name and schema in the constructor.
//Note that the full namespace must be given for the Rule type to differentiate it from other Rule types.
Microsoft.SqlServer.Management.Smo.Rule ru;
ru = new Rule(db, "TestRule", "Production");
//Set the TextHeader and TextBody properties to define the rule.
ru.TextHeader = "CREATE RULE [Production].[TestRule] AS";
ru.TextBody = "@value BETWEEN GETDATE() AND DATEADD(year,4,GETDATE())";
//Create the rule on the instance of SQL Server.
ru.Create();
//Bind the rule to a column in the Product table by supplying the table, schema, and
//column as arguments in the BindToColumn method.
ru.BindToColumn("Product", "SellEndDate", "Production");
//Unbind from the column before removing the rule from the database.
ru.UnbindFromColumn("Product", "SellEndDate", "Production");
ru.Drop();
}
Создание, изменение и удаление правила в PowerShell
Данный образец кода показывает, как создать правило, добавить его в столбец, изменить свойства объекта Rule, отсоединить его от столбца и удалить его.
Инструкция Dim для объекта Rule указывается с полным путем к сборке, чтобы избежать неоднозначности с объектом Rule в сборке System.Data.
# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2008R2
CD \sql\localhost\default\databases
$db = get-item Adventureworks2008R2
# Define a Rule object variable by supplying the parent database, name and schema in the constructor.
$ru = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Rule `
-argumentlist $db, "TestRule", "Production"
#Set the TextHeader and TextBody properties to define the rule.
$ru.TextHeader = "CREATE RULE [Production].[TestRule] AS"
$ru.TextBody = "@value BETWEEN GETDATE() AND DATEADD(year,4,GETDATE())"
#Create the rule on the instance of SQL Server.
$ru.Create()
# Bind the rule to a column in the Product table by supplying the table, schema, and
# column as arguments in the BindToColumn method.
$ru.BindToColumn("Product", "SellEndDate", "Production")
#Unbind from the column before removing the rule from the database.
$ru.UnbindFromColumn("Product", "SellEndDate", "Production")
$ru.Drop()