Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Daten können mithilfe der Speicheralgorithmen gespeichert werden, die von partitionierten Tabellen und Indizes bereitgestellt werden. Die Partitionierung kann bewirken, dass sich große Tabellen und Indizes besser verwalten und skalieren lassen.
Index- und Tabellenpartitionierung
Mit dem Feature können Index- und Tabellendaten auf mehrere Dateigruppen in Partitionen verteilt werden. Eine Partitionsfunktion definiert, wie die Zeilen einer Tabelle oder eines Indexes einem Satz von Partitionen zugeordnet werden, basierend auf den Werten bestimmter Spalten, die als Partitionierungsspalten bezeichnet werden. Ein Partitionsschema ordnet jede Partition, die von der Partitionsfunktion angegeben wird, einer Dateigruppe zu. Auf diese Weise können Sie Archivierungsstrategien entwickeln, mit denen Tabellen über Dateigruppen und daher physische Geräte skaliert werden können.
Das Database Objekt enthält eine Auflistung von PartitionFunction Objekten, die die implementierten Partitionsfunktionen darstellen, und eine Auflistung von PartitionScheme Objekten, die beschreiben, wie Daten Dateigruppen zugeordnet werden.
Jedes Table Objekt gibt Index an, welches Partitionsschema in der PartitionScheme Eigenschaft verwendet wird, und gibt die Spalten in der PartitionSchemeParameterCollection.
Beispiel
Im folgenden Codebeispiel müssen Sie die Programmierumgebung, die Programmiervorlage und die Programmiersprache auswählen, um Ihre Anwendung zu erstellen. Weitere Informationen finden Sie unter Erstellen eines Visual Basic-SMO-Projekts in Visual Studio .NET und Erstellen eines Visual C#-SMO-Projekts in Visual Studio .NET.
Einrichten eines Partitionsschemas für eine Tabelle in Visual Basic
Das Codebeispiel zeigt, wie Sie eine Partitionsfunktion und ein Partitionsschema für die TransactionHistory Tabelle in der AdventureWorks2012-Beispieldatenbank erstellen. Die Partitionen werden nach Datum unterteilt, mit der Absicht, alte Datensätze in die TransactionHistoryArchive Tabelle zu trennen.
Einrichten eines Partitionsschemas für eine Tabelle in Visual C#
Das Codebeispiel zeigt, wie Sie eine Partitionsfunktion und ein Partitionsschema für die TransactionHistory Tabelle in der AdventureWorks2012-Beispieldatenbank erstellen. Die Partitionen werden nach Datum unterteilt, mit der Absicht, alte Datensätze in die TransactionHistoryArchive Tabelle zu trennen.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks2012 database.
Database db;
db = srv.Databases("AdventureWorks2012");
//Define and create three new file groups on the database.
FileGroup fg2;
fg2 = new FileGroup(db, "Second");
fg2.Create();
FileGroup fg3;
fg3 = new FileGroup(db, "Third");
fg3.Create();
FileGroup fg4;
fg4 = new FileGroup(db, "Fourth");
fg4.Create();
//Define a partition function by supplying the parent database and name arguments in the constructor.
PartitionFunction pf;
pf = new PartitionFunction(db, "TransHistPF");
//Add a partition function parameter that specifies the function uses a DateTime range type.
PartitionFunctionParameter pfp;
pfp = new PartitionFunctionParameter(pf, DataType.DateTime);
pf.PartitionFunctionParameters.Add(pfp);
//Specify the three dates that divide the data into four partitions.
object[] val;
val = new object[] {"1/1/2003", "1/1/2004", "1/1/2005"};
pf.RangeValues = val;
//Create the partition function.
pf.Create();
//Define a partition scheme by supplying the parent database and name arguments in the constructor.
PartitionScheme ps;
ps = new PartitionScheme(db, "TransHistPS");
//Specify the partition function and the filegroups required by the partition scheme.
ps.PartitionFunction = "TransHistPF";
ps.FileGroups.Add("PRIMARY");
ps.FileGroups.Add("second");
ps.FileGroups.Add("Third");
ps.FileGroups.Add("Fourth");
//Create the partition scheme.
ps.Create();
}
Einrichten eines Partitionsschemas für eine Tabelle in PowerShell
Das Codebeispiel zeigt, wie Sie eine Partitionsfunktion und ein Partitionsschema für die TransactionHistory Tabelle in der AdventureWorks2012-Beispieldatenbank erstellen. Die Partitionen werden nach Datum unterteilt, mit der Absicht, alte Datensätze in die TransactionHistoryArchive Tabelle zu trennen.
# Set the path context to the local, default instance of SQL Server.
CD \sql\localhost\default
#Get a server object which corresponds to the default instance
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server
$db = $srv.Databases["AdventureWorks"]
#Create four filegroups
$fg1 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "First"
$fg2 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Second"
$fg3 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Third"
$fg4 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Fourth"
#Define a partition function by supplying the parent database and name arguments in the constructor.
$pf = New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionFunction -argumentlist $db, "TransHistPF"
$T = [Microsoft.SqlServer.Management.SMO.DataType]::DateTime
$T
$T.GetType()
#Add a partition function parameter that specifies the function uses a DateTime range type.
$pfp = New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionFunctionParameter -argumentlist $pf, $T
#Specify the three dates that divide the data into four partitions.
#Create an array of type object to hold the partition data
$val = "1/1/2003"."1/1/2004","1/1/2005"
$pf.RangeValues = $val
$pf
#Create the partition function
$pf.Create()
#Create partition scheme
$ps = New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionScheme -argumentlist $db, "TransHistPS"
$ps.PartitionFunction = "TransHistPF"
#add the filegroups to the scheme
$ps.FileGroups.Add("PRIMARY")
$ps.FileGroups.Add("Second")
$ps.FileGroups.Add("Third")
$ps.FileGroups.Add("Fourth")
#Create it at the server
$ps.Create()