スキーマの作成、変更、および削除

Schema オブジェクトは、データベース オブジェクトの所有権コンテキストを表現します。 Database オブジェクトの Schemas プロパティは、Schema オブジェクトのコレクションを表現します。

提供されているコード例を使用するには、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。 詳細については、「Visual Studio .NET での Visual Basic SMO プロジェクトの作成」または「Visual Studio .NET での Visual C# SMO プロジェクトの作成」を参照してください。

Visual Basic でのスキーマの作成、変更、および削除

このコード例では、スキーマを作成してデータベース オブジェクトに割り当てる方法を示します。 その後、ユーザーに権限を許可し、スキーマに新しいテーブルを作成します。

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2012database.
Dim db As Database
db = srv.Databases("AdventureWorks2012")
'Define a Schema object variable by supplying the parent database and name arguments in the constructor.
Dim sch As Schema
sch = New Schema(db, "MySchema1")
sch.Owner = "dbo"
'Create the schema on the instance of SQL Server.
sch.Create()
'Define an ObjectPermissionSet that contains the Update and Select object permissions.
Dim obperset As ObjectPermissionSet
obperset = New ObjectPermissionSet()
obperset.Add(ObjectPermission.Select)
obperset.Add(ObjectPermission.Update)
'Grant the set of permissions on the schema to the guest account.
sch.Grant(obperset, "guest")
'Define a Table object variable by supplying the parent database, name and schema arguments in the constructor.
Dim tb As Table
tb = New Table(db, "MyTable", "MySchema1")
Dim mycol As Column
mycol = New Column(tb, "Date", DataType.DateTime)
tb.Columns.Add(mycol)
tb.Create()
'Modify the owner of the schema and run the Alter method to make the change on the instance of SQL Server.
sch.Owner = "guest"
sch.Alter()
'Run the Drop method for the table and the schema to remove them.
tb.Drop()
sch.Drop()

Visual C# でのスキーマの作成、変更、および削除

このコード例では、スキーマを作成してデータベース オブジェクトに割り当てる方法を示します。 その後、ユーザーに権限を許可し、スキーマに新しいテーブルを作成します。

{
         //Connect to the local, default instance of SQL Server. 
         Server srv = new Server(); 
        //Reference the AdventureWorks2012 database. 
        Database db = srv.Databases["AdventureWorks2012"]; 
        //Define a Schema object variable by supplying the parent database and name arguments in the constructor. 
        Schema sch = new Schema(db, "MySchema1"); 
        sch.Owner = "dbo"; 

        //Create the schema on the instance of SQL Server. 
        sch.Create(); 

        //Define an ObjectPermissionSet that contains the Update and Select object permissions. 
        ObjectPermissionSet obperset = new ObjectPermissionSet(); 
        obperset.Add(ObjectPermission.Select); 
        obperset.Add(ObjectPermission.Update); 

        //Grant the set of permissions on the schema to the guest account. 
        sch.Grant(obperset, "guest"); 

        //Define a Table object variable by supplying the parent database, name and schema arguments in the constructor. 
        Table tb = new Table(db, "MyTable", "MySchema1"); 
       Column mycol = new Column(tb, "Date", DataType.DateTime); 
        tb.Columns.Add(mycol); 
        tb.Create(); 

        //Modify the owner of the schema and run the Alter method to make the change on the instance of SQL Server. 
        sch.Owner = "guest"; 
        sch.Alter(); 

        //Run the Drop method for the table and the schema to remove them. 
        tb.Drop(); 
        sch.Drop(); 
}

PowerShell でのスキーマの作成、変更、および削除

このコード例では、スキーマを作成してデータベース オブジェクトに割り当てる方法を示します。 その後、ユーザーに権限を許可し、スキーマに新しいテーブルを作成します。

# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2012
CD \sql\localhost\default\databases
$db = get-item Adventureworks2012

# Define a schema object variable by supplying the parent database and name arguments in the constructor. 
$sch  = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Schema `
-argumentlist $db, "MySchema1"

# Set schema owner
$sch.Owner = "dbo" 

# Create the schema on the instance of SQL Server. 
$sch.Create()

# Define an ObjectPermissionSet that contains the Update and Select object permissions. 
$obperset  = New-Object -TypeName Microsoft.SqlServer.Management.SMO.ObjectPermissionSet
$obperset.Add([Microsoft.SqlServer.Management.SMO.ObjectPermission]::Select)
$obperset.Add([Microsoft.SqlServer.Management.SMO.ObjectPermission]::Update)

# Grant the set of permissions on the schema to the guest account. 
$sch.Grant($obperset, "guest")

#Create a SMO Table with one column and add it to the database
$tb = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Table -argumentlist $db, "MyTable", "MySchema1"
$Type = [Microsoft.SqlServer.Management.SMO.DataType]::DateTime
$mycol =  New-Object -TypeName Microsoft.SqlServer.Management.SMO.Column -argumentlist $tb,"Date", $Type
$tb.Columns.Add($mycol)
$tb.Create() 

# Modify the owner of the schema and run the Alter method to make the change on the instance of SQL Server. 
$sch.Owner = "guest"
$sch.Alter()

# Run the Drop method for the table and the schema to remove them. 
$tb.Drop()
$sch.Drop()