Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Dit onderwerp bevat een lijst met T-SQL-bereik en ondersteunde functies in de hoofdtekst van native gecompileerde T-SQL-modules, zoals opgeslagen procedures (CREATE PROCEDURE (Transact-SQL)), gebruikersgedefinieerde scalaire functies, inline-tabelwaardefuncties en triggers.
Zie Ondersteunde DDL voor systeemeigen T-SQL-modules voor ondersteunde functies rond de definitie van systeemeigen modules.
Zie Migratieproblemen voor systeemeigen gecompileerde opgeslagen procedures voor volledige informatie over niet-ondersteunde constructies en voor informatie over het omzeilen van enkele van de niet-ondersteunde functies in systeemeigen gecompileerde modules. Zie Transact-SQL Constructs Not Supported by In-Memory OLTP voor meer informatie over niet-ondersteunde functies.
Surface Area opvragen in systeemeigen modules
De volgende queryconstructies worden ondersteund:
CASE-expressie: CASE kan worden gebruikt in elke instructie of clausule die een geldige expressie toestaat.
-
Van toepassing op: SQL Server 2017 (14.x).
Vanaf SQL Server 2017 (14.x) worden CASE-instructies nu ondersteund voor systeemeigen gecompileerde T-SQL-modules.
SELECT-clausule
Kolommen en naamaliasen (met de syntaxis AS of =).
Scalaire subquery's
- Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) worden scalaire subquery's nu ondersteund in systeemeigen gecompileerde modules.
BOVEN*
SELECT DISTINCT
Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) wordt de operator DISTINCT ondersteund in systeemeigen gecompileerde modules.
- DISTINCT-aggregaties worden niet ondersteund.
UNION en UNION ALL
- Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) worden UNION- en UNION ALL-operators nu ondersteund in systeemeigen gecompileerde modules.
Variabele toewijzingen
FROM-clausule
Van < geheugen-geoptimaliseerde tabel of tabelvariabele>
VAN <systeemeigen gecompileerd inline TVF>
LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN en INNER JOIN.
- Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) worden JOINS nu ondersteund in systeemeigen gecompileerde modules.
Subqueries
[AS] table_alias. Zie FROM (Transact-SQL)voor meer informatie.- Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) worden subquery's nu ondersteund in systeemeigen gecompileerde modules.
WHERE-clausule:
Filterpredicaat IS [NOT] NULL
EN, TUSSEN
OF, NIET, IN, BESTAAT
- Van toepassing op: SQL Server 2016 (13.x). Vanaf SQL Server 2016 (13.x) worden OR/NOT/IN/EXISTS-operators nu ondersteund in systeemeigen gecompileerde modules.
Aggregatiefuncties AVG, COUNT, COUNT_BIG, MIN, MAX en SUM.
MIN en MAX worden niet ondersteund voor typen nvarchar, char, varchar, varchar, varbinary en binary.
Er is geen ondersteuning voor DISTINCT in de ORDER BY-component .
Wordt ondersteund met GROUP BY (Transact-SQL) als een expressie in de LIJST ORDER BY letterlijk wordt weergegeven in de lijst GROUP BY.
- Bijvoorbeeld, GROUP BY a + b ORDER BY a + b wordt ondersteund, maar GROUP BY a, b ORDER BY a + b niet.
HATING-clausule:
- Is onderhevig aan dezelfde expressiebeperkingen als de WHERE-component.
ORDER BY en TOP worden ondersteund in systeemeigen gecompileerde modules, met enkele beperkingen
Er is geen ondersteuning voor WITH TIES of PERCENT in de TOP-clausule.
Er is geen ondersteuning voor DISTINCT in de ORDER BY-component .
TOP in combinatie met ORDER BY biedt geen ondersteuning voor meer dan 8.192 bij gebruik van een constante in de TOP-component .
- Deze limiet kan worden verlaagd als de query joins of statistische functies bevat. (Met één join (twee tabellen) is de limiet bijvoorbeeld 4096 rijen. Met twee joins (drie tabellen) is de limiet 2.730 rijen.)
- U kunt resultaten verkrijgen die groter zijn dan 8.192 door het aantal rijen in een variabele op te slaan:
DECLARE @v INT = 9000;
SELECT TOP (@v) ... FROM ... ORDER BY ...
Een constante in de TOP-component resulteert echter in betere prestaties in vergelijking met het gebruik van een variabele.
Deze beperkingen voor systeemeigen gecompileerde Transact-SQL zijn niet van toepassing op geïnterpreteerde Transact-SQL toegang tot tabellen die zijn geoptimaliseerd voor geheugen.
Gegevens wijzigen
De volgende DML-verklaringen worden ondersteund.
INSERT VALUES (een rij per statement) en INSERT ... SELECT
UPDATE
Verwijderen
WHERE wordt ondersteund met UPDATE- en DELETE-instructies.
Stroombeheertaal
De volgende stroombeheertaalconstructies worden ondersteund.
DECLARE @local_variable (Transact-SQL) kan alle ondersteunde gegevenstypen gebruiken voor In-Memory OLTP, evenals tabeltypen die zijn geoptimaliseerd voor geheugen. Variabelen kunnen worden gedeclareerd als NULL of NIET NULL.
-
- Gebruik één TRY/CATCH-blok voor een volledig systeemeigen gecompileerde T-SQL-module om optimale prestaties te bereiken.
BEGIN ATOMIC (op het buitenste niveau van de opgeslagen procedure). Zie Atomic Blocks voor meer informatie.
Ondersteunde operators
De volgende operators worden ondersteund.
Vergelijkingsoperatoren (Transact-SQL) (bijvoorbeeld >, <>=en <=)
Unaire operatoren (+, -).
Binaire operatoren (*, /, +, -, % (modulo)).
- De plus-operator (+) wordt ondersteund voor zowel getallen als tekenreeksen.
Logische operators (AND, OR, NOT).
Bitsgewijze operatoren ~, &, |en ^
APPLY-operator
-
Van toepassing op: SQL Server 2017 (14.x).
Vanaf SQL Server 2017 (14.x) wordt de OPERATOR APPLY ondersteund in systeemeigen gecompileerde modules.
-
Van toepassing op: SQL Server 2017 (14.x).
Ingebouwde functies in systeemeigen gecompileerde modules
De volgende functies worden ondersteund in beperkingen voor tabellen die zijn geoptimaliseerd voor geheugen en in systeemeigen gecompileerde T-SQL-modules.
Datumfuncties: CURRENT_TIMESTAMP, DATEADD, DATEDIFF, DATEFROMPARTS, DATEPART, DATETIME2FROMPARTS, DATETIMEFROMPARTS, DAY, EOMONTH, GETDATE, GETUTCDATE, MONTH, SMALLDATETIMEFROMPARTS, SYSDATETIME, SYSUTCDATETIME en YEAR.
Tekenreeksfuncties: LEN, LTRIM, RTRIM en SUBSTRING.
-
Van toepassing op: SQL Server 2017 (14.x).
Vanaf SQL Server 2017 (14.x) worden ook de volgende ingebouwde functies ondersteund: TRIM, TRANSLATE en CONCAT_WS.
-
Van toepassing op: SQL Server 2017 (14.x).
Identiteitsfuncties: SCOPE_IDENTITY
NULL-functies: ISNULL
Uniqueidentifier-functies: NEWID en NEWSEQUENTIALID
JSON-functies
-
Van toepassing op: SQL Server 2017 (14.x).
Vanaf SQL Server 2017 (14.x) worden de JSON-functies ondersteund in systeemeigen gecompileerde modules.
-
Van toepassing op: SQL Server 2017 (14.x).
Foutfuncties: ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY en ERROR_STATE
Systeemfuncties: @@rowcount. Instructies binnen systeemeigen gecompileerde opgeslagen procedures werken @@rowcount bij, en u kunt @@rowcount in een dergelijke procedure gebruiken om het aantal rijen te bepalen dat door de laatste binnen die procedure uitgevoerde instructie is beïnvloed. @@rowcount wordt echter opnieuw ingesteld op 0 aan het begin en aan het einde van de uitvoering van een systeemeigen gecompileerde opgeslagen procedure.
Beveiligingsfuncties: IS_MEMBER({'group' | 'role'}), IS_ROLEMEMBER ('role' [, 'database_principal']), IS_SRVROLEMEMBER ('role' [, 'login']), ORIGINAL_LOGIN(), SESSION_USER, CURRENT_USER, SUSER_ID(['login']), SUSER_SID(['login'] [, Param2]), SUSER_SNAME([server_user_sid]), SYSTEM_USER, SUSER_NAME, USER, USER_ID(['user']), USER_NAME([id]), CONTEXT_INFO().
Uitvoeringen van systeemeigen modules kunnen worden genest.
Auditing
Controle op procedureniveau wordt ondersteund in systeemeigen gecompileerde opgeslagen procedures.
Zie Een servercontrole- en databasecontrolespecificatie maken voor meer informatie over controle.
Tabel en query hints
Het volgende wordt ondersteund:
INDEX-, FORCESCAN- en FORCESEEK-hints, in de syntaxis van tabelhints of in OPTION-component (Transact-SQL) van de query. Zie tabelhints (Transact-SQL)voor meer informatie.
KRACHTBEVEL
HINT VOOR EEN LOOP JOIN
OPTIMALISEREN VOOR
Zie queryhints (Transact-SQL)voor meer informatie.
Beperkingen voor sorteren
U kunt meer dan 8000 rijen sorteren in een query die GEBRUIKMAAKT van TOP (Transact-SQL) en een ORDER BY-component (Transact-SQL). Zonder ORDER BY-component (Transact-SQL), kan TOP (Transact-SQL) echter maximaal 8000 rijen sorteren (minder rijen als er joins zijn).
Als uw query zowel de operator TOP (Transact-SQL) als een ORDER BY-component (Transact-SQL) gebruikt, kunt u maximaal 8192 rijen opgeven voor de operator TOP. Als u meer dan 8192 rijen opgeeft, krijgt u het foutbericht: Msg 41398, Level 16, State 1, Procedure <procedureName>, LineNumber<> De operator TOP kan maximaal 8192 rijen retourneren; <nummer> is aangevraagd.
Als u geen TOP-component hebt, kunt u een willekeurig aantal rijen sorteren met ORDER BY.
Als u geen ORDER BY-component gebruikt, kunt u een geheel getal gebruiken met de operator TOP.
Voorbeeld met TOP N = 8192: Compileert
CREATE PROCEDURE testTop
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')
SELECT TOP 8192 ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart
ORDER BY ShoppingCartId DESC
END;
GO
Voorbeeld met TOP N > 8192: kan niet worden gecompileerd.
CREATE PROCEDURE testTop
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')
SELECT TOP 8193 ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart
ORDER BY ShoppingCartId DESC
END;
GO
De 8192-rijbeperking is alleen van toepassing op TOP N waar N een constante is, zoals in de voorgaande voorbeelden. Als u meer dan 8192 nodig hebt N , kunt u de waarde toewijzen aan een variabele en deze variabele gebruiken met TOP.
Voorbeeld met behulp van een variabele: Compileert
CREATE PROCEDURE testTop
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')
DECLARE @v int = 8193
SELECT TOP (@v) ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart
ORDER BY ShoppingCartId DESC
END;
GO
Beperkingen voor geretourneerde rijen: Er zijn twee gevallen waarin het aantal rijen dat kan worden geretourneerd door de operator TOP, kan verminderen:
JOINs gebruiken in de query. De invloed van JOINs op de beperking is afhankelijk van het queryplan.
Aggregatiefuncties of verwijzingen naar aggregatiefuncties gebruiken in de ORDER BY-clausule.
De formule voor het berekenen van een maximaal ondersteunde N in TOP N is: N = floor ( 65536 / number_of_tables * 8 + total_size+of+aggs ).
Zie ook
Systeemeigen gecompileerde opgeslagen procedures
Migratieproblemen voor systeemeigen gecompileerde opgeslagen procedures