Spezifikationen der maximalen Kapazität für SQL Server

Gilt für:SQL Server

In diesem Artikel finden Sie die maximalen Größen und Anzahlen verschiedener Objekte, die in SQL Server 2016 (13.x) und höher definiert sind. Weitere Informationen über die Editionsbeschränkungen finden Sie unter Computekapazitätsbeschränkungen nach SQL Server-Edition.

Informationen zu SQL Server 2014 (12.x) finden Sie unter Spezifikationen der maximalen Kapazität für SQL Server 2014.

Datenbank-Engine-Objekte

Die maximalen Werte verschiedener Objekte, die in SQL Server-Datenbanken definiert sind oder auf die in Transact-SQL-Anweisungen verwiesen wird

SQL Server Datenbank-Engine-Objekte Maximale Werte für SQL Server (64 Bit) Zusätzliche Informationen
Batchgröße 65.536 × (Netzwerkpaketgröße) Die Größe von Netzwerkpaketen entspricht der Größe der TDS-Pakete (Tabular Data Stream), die für die Kommunikation zwischen der relationalen Datenbank-Engine und Anwendungen verwendet werden. Der Standardwert ist 4 KB. Die Netzwerkpaketgröße steuert diese Konfigurationsoption.
Die Bytelänge einer Zeichenfolge, die Transact-SQL-Anweisungen enthält (Batchgröße) 65.536 × (Netzwerkpaketgröße) Die Größe von Netzwerkpaketen entspricht der Größe der TDS-Pakete (Tabular Data Stream), die für die Kommunikation zwischen der relationalen Datenbank-Engine und Anwendungen verwendet werden. Die Standardpaketgröße beträgt 4 KB und wird durch die Konfigurationsoption Netzwerkpaketgröße gesteuert.
Bytes pro Spalte mit kurzen Zeichenfolgen 8\.000
Byte pro GROUP BY, ORDER BY 8\.060
Bytes pro Indexschlüssel 900 Bytes für einen gruppierten Index. 1.700 Byte für einen nicht gruppierten Index. Für SQL Server 2014 (12.x) und früher haben alle Versionen 900 Byte für alle Indextypen unterstützt. Die maximale Anzahl von Bytes in einem Schlüssel für einen gruppierten Index darf nicht höher als 900 sein. Bei einem Schlüssel für einen nicht gruppierten Index liegt der Höchstwert bei 1.700 Byte.

Sie können einen Schlüssel mithilfe von Spalten mit variabler Länge definieren, deren maximale Größe in der Summe oberhalb des Grenzwerts liegen. Die Gesamtgröße der in diesen Spalten enthaltenen Daten darf den Grenzwert jedoch nie überschreiten.

In einem nicht gruppierten Index können Sie zusätzliche Nichtschlüsselspalten einschließen. Diese werden bei der Berechnung der maximalen Schlüsselgröße nicht berücksichtigt. Die Nichtschlüsselspalten können die Leistung einer Abfragen verbessern.
Bytes pro Indexschlüssel für speicheroptimierte Tabellen 2.500 Byte für einen nicht gruppierten Index. Für einen Hashindex gilt keine Beschränkung, vorausgesetzt dass alle Indexschlüssel in Zeilen passen. Ein nicht gruppierter Index darf bei speicheroptimierten Tabellen keine Schlüsselspalten enthalten, deren maximale deklarierte Größenangaben 2.500 Byte überschreiten. Dabei ist es unerheblich, ob die tatsächlich in den Spalten vorhandenen Daten kürzer sind als die maximalen deklarierten Größenangaben.

Für einen Hashindexschlüssel gibt es keinen festen Grenzwert für die Größe.

Für Indizes von speicheroptimierten Tabellen ist das Konzept der eingeschlossenen Spalten hinfällig, da alle Indizes grundsätzlich alle Spalten abdecken.

Obwohl die Zeilenlänge bei speicheroptimierten Tabellen 8.060 Byte beträgt, können einige Spalten mit variabler Länge physisch außerhalb dieser 8.060 Byte gespeichert werden. Allerdings müssen die maximalen deklarierten Größenangaben aller Schlüsselspalten für alle Indizes einer Tabelle sowie alle zusätzlichen Spalten mit fester Länge in der Tabelle in die 8.060 Byte passen.
Bytes pro Fremdschlüssel 900
Bytes pro Primärschlüssel 900
Bytes pro Zeile 8\.060 SQL Server unterstützt die Zeilenüberlaufspeicherung, sodass Spalten variabler Länge aus der Zeile verschoben werden können. Im Hauptdatensatz für Spalten variabler Länge, die aus einer Zeile verschoben wurden, wird nur ein 24-Byte-Stamm gespeichert. Weitere Informationen finden Sie unter Unterstützung von umfangreichen Zeilen.
Bytes pro Zeile in speicheroptimierten Tabellen 8\.060 Speicheroptimierte Tabellen in SQL Server 2016 (13.x) und höher unterstützen die Speicherung außerhalb der Zeile. Spalten mit variabler Länge werden aus der Zeile verschoben, wenn die maximalen Größengaben aller Spalten in der Tabelle 8.060 Byte überschreiten. Diese Entscheidung fällt zur Kompilierzeit. Für Spalten, die außerhalb der Zeile gespeichert wurden, wird in der Zeile nur eine 8-Byte-Referenz gespeichert. Weitere Informationen finden Sie unter Tabellen- und Zeilengröße in speicheroptimierten Tabellen.
Bytes im Quelltext einer gespeicherten Prozedur Kleiner als Batchgröße oder 250 MB
Bytes pro varchar(max)-, varbinary(max)-, xml-, text- oder image-Spalte. 2^31-1
Zeichen pro ntext- oder nvarchar(max)-Spalte 2^30-1
Gruppierte Indizes pro Tabelle 1
Spalten in GROUP BY, ORDER BY Begrenzung nur durch die Anzahl von Bytes
Spalten oder Ausdrücke in einer GROUP BY WITH CUBE- oder GROUP BY WITH ROLLUP-Anweisung 10
Spalten pro Indexschlüssel 32 Wenn die Tabelle einen oder mehrere XML-Indizes enthält, ist der Gruppierungsschlüssel der Benutzertabelle auf 31 Spalten beschränkt, da die XML-Spalte dem Gruppierungsschlüssel des primären XML-Index hinzugefügt wird. Sie können Nichtschlüsselspalten in den nicht gruppierten Index aufnehmen, um die Beschränkung auf maximal 32 Schlüsselspalten zu vermeiden. Weitere Informationen finden Sie unter Create Indexes with Included Columns.
Spalten pro Fremdschlüssel oder Primärschlüssel 32
Spalten pro INSERT-Anweisung 4\.096
Spalten pro SELECT-Anweisung 4\.096
Spaltenanzahl pro Tabelle 1\.024 Tabellen, die Sparsespaltensätze enthalten, umfassen bis zu 30.000 Spalten. Siehe Sparsespaltensätze.
Spalten pro UPDATE-Anweisung 4\.096 Es gelten verschiedene Grenzwerte für Sparsespaltensätze.
Spalten pro Sicht 1\.024
Verbindungen pro Client Höchstwert konfigurierter Verbindungen
Datenbankgröße 524.272 Terabytes
Datenbanken pro Instanz von SQL Server 32.767
Dateigruppen pro Datenbank 32.767
Dateigruppen pro Datenbank für speicheroptimierte Daten 1
Dateien pro Datenbank 32.767
Dateigröße (Daten) 16 Terabytes
Dateigröße (Protokoll) 2 Terabytes
Datendateien für speicheroptimierte Daten pro Datenbank 4\.096 in SQL Server 2014 (12.x). Der Grenzwert ist weniger streng in SQL Server 2016 (13.x) und höher.
Änderungsdatei pro Datendatei für speicheroptimierte Daten 1
Verweise auf Fremdschlüsseltabellen pro Tabelle Ausgehend = 253.
Eingehend = 10.000.
Einschränkungen finden Sie unter Create Foreign Key Relationships.
Bezeichnerlänge (in Zeichen) 128
Instanzen pro Computer 50 Instanzen auf einem eigenständigen Server.

25 Failoverclusterinstanzen bei der Verwendung eines freigegebenen Clusterdatenträgers als Speicher

50 Failoverclusterinstanzen mit SMB-Dateifreigaben als Speicheroption.
Indizes pro speicheroptimierter Tabelle 999 ab SQL Server 2017 (14.x) und in Azure SQL-Datenbank

8 in SQL Server 2016 (13.x) und SQL Server 2014 (12.x)
Sperren pro Verbindung Maximale Anzahl Sperren pro Server
Sperren pro Instanz von SQL Server Begrenzung nur durch Arbeitsspeicher Dieser Wert dient der statischen Sperrenzuordnung. Dynamische Sperren sind nur durch den Arbeitsspeicher beschränkt.
Schachtelungsebenen gespeicherter Prozeduren 32 Wenn eine gespeicherte Prozedur auf mehr als 64 Datenbanken oder mehr als zwei sich überlappende Datenbanken zugreift, wird eine Fehlermeldung angezeigt.
Geschachtelte Unterabfragen 32
Geschachtelte Transaktionen 4\.294.967.296
Schachtelungsebenen für Trigger 32
Nicht gruppierte Indizes pro Tabelle 999
Anzahl unterschiedlicher Ausdrücke in der GROUP BY-Klausel bei Vorhandensein eines der folgenden Ausdrücke: CUBE, ROLLUP, GROUPING SETS, WITH CUBE, WITH ROLLUP 32
Anzahl der Gruppierungssätze, die von Operatoren in der GROUP BY-Klausel generiert wurden 4\.096
Parameter pro gespeicherter Prozedur 2\.100
Parameter pro benutzerdefinierter Funktion 2\.100
REFERENCES pro Tabelle 253
Zeilen pro Tabelle Begrenzung durch verfügbaren Speicherplatz
Tabellen pro Datenbank Begrenzung durch die Gesamtzahl der Objekte in einer Datenbank Zu den Objekten zählen Tabellen, Sichten, gespeicherte Prozeduren, benutzerdefinierte Funktionen, Trigger, Regeln, Standardwerte und Einschränkungen. Die Summe aller Objekte in einer Datenbank darf nicht höher als 2.147.483.647 sein.
Partitionen pro partitionierter Tabelle oder partitioniertem Index 15.000
Statistiken für nicht indizierte Spalten 30.000
Tabellen pro SELECT-Anweisung Begrenzung nur durch verfügbare Ressourcen
Trigger pro Tabelle Begrenzung durch die Anzahl der Objekte in einer Datenbank Zu den Objekten zählen Tabellen, Sichten, gespeicherte Prozeduren, benutzerdefinierte Funktionen, Trigger, Regeln, Standardwerte und Einschränkungen. Die Summe aller Objekte in einer Datenbank darf nicht höher als 2.147.483.647 sein.
Benutzerverbindungen 32.767
XML-Indizes 249

SQL Server-Datenschichtanwendungsobjekte

Die maximalen Werte verschiedener, in SQL Server -Datenschichtanwendungen (Data-Tier Application, DAC) getesteter Objekte

SQL Server DAC-Objekt Maximale Werte für SQL Server (64 Bit) Zusätzliche Informationen
Datenbanken pro DAC 1
Objekte pro DAC Durch die Anzahl der Objekte in einer Datenbank oder durch den verfügbaren Speicher beschränkt. Die maximalen Werte gelten für folgende Objekttypen: Benutzer, Tabellen, Sichten, gespeicherte Prozeduren, benutzerdefinierte Funktionen, benutzerdefinierte Datentypen, Datenbankrollen, Schemas und benutzerdefinierte Tabellentypen.

Replikationsobjekte

Die maximalen Werte verschiedener, in der SQL Server -Replikation definierter Objekte

SQL Server Replikationsobjekt Maximale Werte für SQL Server
(64-Bit)
Zusätzliche Informationen
Artikel (Mergeveröffentlichung) 2\.048
Artikel (Momentaufnahmen- oder Transaktionsveröffentlichung) 32.767
Spalten in einer Tabelle (Mergeveröffentlichung) 246 Wenn Zeilennachverfolgung zur Konflikterkennung verwendet wird (Standard), kann die Basistabelle maximal 1.024 Spalten enthalten. Die Publikation muss den Artikel jedoch so filtern, dass maximal 246 Spalten veröffentlicht werden. Wenn Spaltennachverfolgung verwendet wird, kann die Basistabelle maximal 246 Spalten enthalten.
Spalten in einer Tabelle (SQL Server-Momentaufnahmen- oder -Transaktionsveröffentlichung) 1\.000 Die Basistabelle kann die maximal zulässige Anzahl von Spalten in der SQL Server-Veröffentlichungsdatenbank (1.024) enthalten. Die Spalten müssen aber aus dem Artikel herausgefiltert werden, wenn sie das für den Veröffentlichungstyp angegebene Maximum überschreiten.
Spalten in einer Tabelle (Oracle-Momentaufnahmen- oder -Transaktionsveröffentlichung) 995 Die Basistabelle kann die maximal zulässige Anzahl von Spalten in der SQL Server-Veröffentlichungsdatenbank (1.024) enthalten. Die Spalten müssen aber aus dem Artikel herausgefiltert werden, wenn sie das für den Veröffentlichungstyp angegebene Maximum überschreiten.
Bytes für eine in einem Zeilenfilter verwendete Spalte (Mergeveröffentlichung) 1\.024
Bytes für eine in einem Zeilenfilter verwendete Spalte (Momentaufnahmen- oder Transaktionsveröffentlichung) 8\.000

Siehe auch