KB5016884 – kumulativní aktualizace 31 pro SQL Server 2017
Datum vydání:
20.09.2022
Verze:
14.0.3456.2
Důležité informace: Kumulativní aktualizace 31 je poslední kumulativní aktualizace pro Microsoft SQL Server 2017. SQL Server 2017 bude po 11. říjnu 2022 převedena na rozšířenou podporu.
Shrnutí
Tento článek popisuje balíček kumulativní aktualizace 31 (CU31) pro Microsoft SQL Server 2017. Tato aktualizace obsahuje 20 oprav vydaných po vydání kumulativní aktualizace SQL Server 2017 30 a aktualizuje součásti na následující sestavení:
-
SQL Server – verze produktu: 14.0.3456.2, verze souboru: 2017.140.3456.2
-
Analysis Services – verze produktu: 14.0.249.94, verze souboru: 2017.140.249.94
Známé problémy v této aktualizaci
Předpokládejme, že tabulka používaná replikací používá sloupec, který používá funkci NEWSEQUENTIALID v primárním klíči. Při pokusu o použití snímku u odběratele dojde k chybě. Tady jsou pokusy o příkaz a chybové zprávy:
-
Pokus o příkaz:
create procedure [sp_MSupd_PersonAddress]
@c1 int = NULL,
@c2 nvarchar(60) = NULL,
@c3 nvarchar(60) = NULL,
@c4 nvarchar(30) = NULL,
@c5 int = NULL,
@c6 nvarchar(15) = NULL,
@c7 [geography] = NULL,
@c8 uniqueidentifier = NULL,
@c9 datetime = NULL,
@pkc1 uniqueidentifier = NULL,
@bitmap binary(2)
as
begin
declare @primarykey_text nvarchar(100) = ''
if (substring(@bitmap,1,1) & 128 = 128)
begin
if @pkc1 is null
set @pkc1 = (newsequentialid())
update [Person].[
(Transaction sequence number: 0x0000002400000F30005500000000, Command ID: 7)
-
Chybové zprávy:
Integrovanou funkci newsequentialid() lze použít pouze ve výrazu DEFAULT pro sloupec typu uniqueidentifier v příkazu CREATE TABLE nebo ALTER TABLE. Nelze ji kombinovat s jinými operátory a vytvořit tak složitý skalární výraz. (Zdroj: MSSQLServer, číslo chyby: 302)
Získat nápovědu: http://help/302
Poznámka Jediným způsobem, jak tento problém vyřešit, je změnit sloupec primárního klíče na funkci NEWID při pořizování snímku a po použití snímku ho znovu nastavit na funkci NEWSEQUENTIALID. Můžete spustit následující příkaz:
ALTER TABLE [Person].[Address] DROP CONSTRAINT [PK_Address_rowguid]
GO
ALTER TABLE [Person].[Address] ADD CONSTRAINT [PK_Address_rowguid] DEFAULT (NEWID()) FOR [rowguid]
GO
ALTER TABLE [Person].[Address] DROP CONSTRAINT [PK_Address_rowguid]
GO
ALTER TABLE [Person].[Address] ADD CONSTRAINT [PK_Address_rowguid] DEFAULT (NEWSEQUENTIALID()) FOR [rowguid]
GO
Vylepšení a opravy zahrnuté v této kumulativní aktualizaci
K dispozici je stáhnout excelový sešit, který obsahuje souhrnný seznam buildů a jejich aktuální životní cyklus podpory. Soubor Excelu obsahuje také podrobné seznamy oprav pro SQL Server 2019 a SQL Server 2017. Stáhněte si tento excelový soubor.
Poznámka: Na jednotlivé položky v následující tabulce lze odkazovat přímo prostřednictvím záložky. Pokud v tabulce vyberete jakékoli ID odkazu na chybu, všimnete si, že se do adresy URL přidá značka záložky pomocí tohoto formátu: #bkmk_NNNNNNNN. Tuto adresu URL pak můžete sdílet s ostatními, aby mohli přejít přímo na požadovanou opravu v tabulce.
Referenční informace o chybách |
Číslo článku znalostní báze |
Popis |
Opravit oblast |
Platform |
||
---|---|---|---|---|---|---|
Řeší chybu zabezpečení typu DoS (Denial of Service) pro knihovnu Newtonsoft v SQL Server 2017. |
Analysis Services |
Windows |
||||
Požadavek jen pro čtení stále směřuje do primárního uzlu pro čtení i zápis ve skupině dostupnosti AlwaysOn, i když uzel seznamu směrování jen pro čtení přestane fungovat. |
Vysoká dostupnost |
Všechny |
||||
Při použití skupin dostupnosti AlwaysOn v sítích s vysokou latencí v SQL Server 2017 dojde k selhání kontrolního výrazu na sekundární replice. V protokolu chyb se může zobrazit toto selhání kontrolního výrazu: Kontrolní výraz: Soubor: <"e:\\b\\s3\\sources\\sql\\ntdbms\\storeng\\dfs\\trans\\lsnlocmap.cpp">, line=358 Failed Assertion = 'pos - pndx < map->EntryCount' |
Vysoká dostupnost |
Všechny |
||||
Metadata databáze tempdb optimalizovaná pro paměť (HkTempDB) dál spotřebovávají paměť v části VARHEAP: LOB Page Allocator. |
In-Memory OLTP |
Windows |
||||
Po paralelním prohledávání indexu indexu dojde k nevracení paměti v indexu rozsahu tabulek v paměti. |
In-Memory OLTP |
Všechny |
||||
K nevracení paměti v rámci haldy indexu rozsahu v tabulce v paměti, která obsahuje nes clusterované indexy, dochází vždy, když existují souběžná vložení. |
In-Memory OLTP |
Všechny |
||||
K problémům s výkonem a zablokování dochází u agenta SQL Server v databázi msdb, která má automatizované zálohy. Kromě toho se v protokolu agenta SQL Server zobrazí následující chybové zprávy: <DateTime> SQLServer Chyba: 1205, transakce (ID procesu) byla uzamčena prostředky zámku jiným procesem a byla vybrána jako oběť vzájemného zablokování. Spusťte transakci znovu. <DateTime> Nepodařilo se načíst> úlohy <ID úlohy ze serveru. |
Nástroje pro správu |
Windows |
||||
5017551 |
Oprava: Instalace SQL Server CU může aktivovat indexOutOfRangeException |
Instalace & instalace |
Windows |
|||
5017788 |
Oprava: ParametrRuntimeValue chybí v Showplan XML při použití dmV sys.dm_exec_query_statistics_xml |
Výkon SQL |
Všechny |
|||
V nástroji sqldk se zobrazí nevýnosný výpis stavu plánovače. SOS_MemoryWorkSpace::Vyhledávání. |
Výkon SQL |
Všechny |
||||
Výpisy paměti se často vyskytují na ColumnStoreAttributeCache::ColumnStoreColumnAttributeNode::GetSegmentById. |
Výkon SQL |
Windows |
||||
5018050 |
Vylepšení: Přidání nových možností úrovně služby Azure SQL Database do funkce Stretch Database |
modul SQL Server |
Windows |
|||
5018231 |
modul SQL Server |
Windows |
||||
5008184 |
modul SQL Server |
Všechny |
||||
Při následném obnovení po zadání LSN na hranici souboru protokolu (VLF) pomocí příkazu RESTORE WITH STANDBY dojde k chybě 9003 s nesprávným pořadovým číslem protokolu (LSN). Tady je chybová zpráva: Zpráva 3013, úroveň 16, stav 1, řádek <číslo řádku> Funkce RESTORE DATABASE se abnormálně ukončuje. Zpráva 9003, úroveň 17, stav 11, řádek <číslo řádku> Číslo prohledávání protokolu (<LogScanNumber>) předané prohledávání protokolu v databázi <DatabaseName> není platné. Tato chyba může znamenat poškození dat nebo to, že soubor protokolu (.ldf) neodpovídá datovému souboru (.mdf). Pokud k této chybě došlo během replikace, vytvořte publikaci znovu. V opačném případě proveďte obnovení ze zálohy, pokud problém způsobí selhání během spouštění. |
modul SQL Server |
Windows |
||||
K chybě 208 dojde při použití sp_changereplicationserverpasswords uložené procedury ke změně uložených hesel pro přihlášení Microsoft SQL Server používané agenty replikace. Tady je chybová zpráva: Msg 208, level 16, State 1, Procedure master.sys.sp_MSchangerepltablepasswords, Line <LineNumber> [Batch Start Line 0] Neplatný název objektu MSreplservers |
modul SQL Server |
Windows |
||||
K vysokému využití procesoru dochází, když povolíte sledování změn u velkého počtu tabulek a provedete automatické nebo ruční čištění tabulek sledování změn. |
modul SQL Server |
Windows |
||||
Funkce FILESTREAM není povolena po restartování operačního systému kvůli podmínkám časování z více instancí SQL Server. V protokolu chyb se zobrazí následující chybová zpráva: Chyba: 5591, závažnost: 16, stav: 5. Funkce FILESTREAM je zakázaná. |
modul SQL Server |
Windows |
||||
ID skupin souborů, které patří do klonovací databáze, může být nesprávné, pokud zdrojová databáze obsahuje mezery v ID skupiny souborů kvůli odebrání souborů nebo skupin souborů. Při pokusu o vložení dat do tabulky, která patří do nesprávně vygenerované klonované databáze, zobrazí se chybová zpráva podobná následující zprávě: Zpráva 622, úroveň 16, stav 3, řádek <číslo řádku> Skupina souborů "<FileGroupName>" nemá přiřazené žádné soubory. Tabulky, indexy, textové sloupce, sloupce ntextu a sloupce obrázků nelze do této skupiny souborů naplnit, dokud se nepřidá soubor. |
modul SQL Server |
Windows |
||||
Po instalaci kumulativní aktualizace 30 (CU30) SQL Server 2017 může dojít k narušení přístupu. K tomuto problému může dojít, když provedete operaci hromadného vložení následovanou příkazem SELECT ve stejné transakci a model obnovení databáze je buď jednoduchý, nebo hromadně protokolovaný. |
modul SQL Server |
Všechny |
Jak získat nebo stáhnout tento nebo nejnovější balíček kumulativní aktualizace
Následující aktualizace je k dispozici na webu Microsoft Download Center:
Stáhnout nejnovější balíček kumulativní aktualizace pro SQL Server 2017
Pokud se stránka pro stažení nezobrazí, obraťte se na oddělení služeb zákazníkům společnosti Microsoft a požádejte o získání balíčku kumulativní aktualizace.
Poznámka: Po vydání budoucích kumulativních aktualizací pro SQL Server 2017 je možné tuto a všechny předchozí aktualizace stáhnout z Katalogu služby Microsoft Update. Doporučujeme však vždy nainstalovat nejnovější kumulativní aktualizaci, která je k dispozici.
Následující aktualizace je k dispozici v Katalogu služby Microsoft Update:
Stáhnout balíček kumulativní aktualizace pro SQL Server 2017 CU 31 teď
Pokud chcete aktualizovat Linux na nejnovější CU, musíte nejprve mít nakonfigurované úložiště kumulativních aktualizací. Pak aktualizujte balíčky SQL Server pomocí příslušného příkazu update specifického pro konkrétní platformu.
Pokyny k instalaci a přímé odkazy na stažení balíčků CU najdete v poznámkách k verzi.
Informace o souborech
Stažení můžete ověřit výpočtem hodnoty hash souboruSQLServer2017-KB5016884-x64.exe spuštěním následujícího příkazu:
certutil -hashfile SQLServer2017-KB5016884-x64.exe SHA256
Název souboru |
Hash SHA256 |
---|---|
SQLServer2017-KB5016884-x64.exe |
AE3554BA0A474B4D1A6B2D3BB7F00A4F6308DBE50178FFF67BAA8B21CC74DBC2 |
Anglická verze tohoto balíčku obsahuje atributy souborů (nebo novější), které jsou uvedeny v následující tabulce. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Při zobrazení informací o souboru jsou převedeny na místní čas. Pokud chcete zjistit rozdíl mezi místním časem (UTC) a místním časem (UTC), použijte kartu Časové pásmo v položce Datum a čas v Ovládací panely.
Verze pro platformu x64 SQL Server 2017 Analysis Services
SQL Server 2017 Database Services Common Core
SQL Server 2017 Data Quality Client
kvalita dat SQL Server 2017
sql_dreplay_client SQL Server 2017
SQL Server sql_dreplay_controller 2017
SQL Server 2017 Database Services Core Instance
SQL Server 2017 Database Services Core Shared
sql_extensibility SQL Server 2017
Full-Text Engine SQL Server 2017
SQL Server 2017 sql_inst_mr
SQL Server 2017 Integration Services
sql_polybase_core_inst SQL Server 2017
SQL Server sql_shared_mr 2017
SQL Server 2017 sql_tools_extensions
|
Poznámky k této aktualizaci
Chcete-li nainstalovat tento balíček kumulativní aktualizace, musíte používat SQL Server 2017.
Po instalaci tohoto balíčku kumulativní aktualizace může být nutné restartovat počítač.
Chcete-li použít jednu z oprav hotfix v tomto balíčku, není nutné provádět žádné změny v registru.
Tento článek obsahuje také důležité informace o následujících situacích:
-
Pacemaker : Změna chování se provádí v distribucích, které používají nejnovější dostupnou verzi Pacemakeru. K dispozici jsou metody zmírnění rizik.
-
Úložiště dotazů : Tento skript musíte spustit, pokud používáte úložiště dotazů a máte dříve nainstalovanou kumulativní aktualizaci Microsoft SQL Server 2017 2 (CU2).
Verze sestavení CU služby Analysis Services
Od SQL Server 2017 se číslo verze sestavení služby Analysis Services a číslo verze sestavení SQL Server databázového stroje neshodují. Další informace najdete v tématu Ověření verze sestavení kumulativní aktualizace služby Analysis Services.
Kumulativní aktualizace (CU)
Kumulativní aktualizace (CU) jsou nyní k dispozici na webu Microsoft Download Center.
Na webu Download Center je k dispozici pouze nejnovější CU, která byla vydána pro SQL Server 2017.
Balíčky CU pro Linux jsou k dispozici na https://packages.microsoft.com/.
Poznámky
-
Každá nová kumulativní aktualizace obsahuje všechny opravy, které byly součástí předchozí kumulativní aktualizace pro nainstalovanou verzi SQL Server.
-
SQL Server jednotek jsou certifikované na stejné úrovni jako aktualizace Service Pack a měly by být nainstalovány na stejné úrovni spolehlivosti.
-
Doporučujeme průběžnou proaktivní instalaci JEDNOTek, jakmile budou k dispozici podle těchto pokynů:
-
Historická data ukazují, že velký počet případů podpory zahrnuje problém, který už byl vyřešen ve vydané cu.
-
CU mohou obsahovat přidanou hodnotu nad oprav hotfix. To zahrnuje aktualizace možností podpory, spravovatelnosti a spolehlivosti.
-
-
Před nasazením do produkčních prostředí doporučujeme otestovat jednotek.
DŮLEŽITÉ
Všechny distribuce (včetně RHEL 7.3 a 7.4), které používají nejnovější dostupný balíček Pacemaker 1.1.18-11.el7 , zavádějí změnu chování pro nastavení clusteru start-failure-is-fatal , pokud je jeho hodnota false. Tato změna má vliv na pracovní postup převzetí služeb při selhání. Pokud dojde k výpadku primární repliky, očekává se převzetí služeb při selhání clusteru na jednu z dostupných sekundárních replik. Místo toho si uživatelé všimnou, že se cluster stále pokouší spustit neúspěšnou primární repliku. Pokud tento primární server nikdy nepřejde do režimu online (kvůli trvalému výpadku), cluster nikdy nepřevede služby při selhání na jinou dostupnou sekundární repliku.
Tento problém se týká všech verzí SQL Server bez ohledu na verzi kumulativní aktualizace, ve které jsou.
Pokud chcete tento problém zmírnit, použijte některou z následujících metod.
Metoda 1
Postupujte:
-
Odeberte přepsání start-failure-is-fatal z existujícího clusteru.
# RHEL, Ubuntu pcs vlastnost unset start-failure-is-fatal # nebo pcs vlastnost set start-failure-is-fatal=true # SLES crm configure property start-failure-is-fatal=true -
Snižte hodnotu cluster-recheck-interval .
# RHEL, Ubuntu pcs property set cluster-recheck-interval=<Xmin> # SLES crm configure property cluster-recheck-interval=<Xmin> -
Přidejte meta vlastnost časového limitu selhání ke každému prostředku skupiny dostupnosti.
# RHEL, Ubuntu pcs resource update ag1 meta failure-timeout=60s # SLES crm configure edit ag1 # In the text editor, add 'meta failure-timeout=60s' after any 'param's's and before any 'op's'Poznámka V tomto kódu nahraďte hodnotu <Xmin> podle potřeby. Pokud dojde k výpadku repliky, cluster se pokusí repliku restartovat v intervalu, který je vázán hodnotou časového limitu selhání a hodnotou cluster-recheck-interval . Pokud je například časový limit selhání nastavený na 60 sekund a interval opětovné kontroly clusteru je nastavený na 120 sekund, restartování se pokusí v intervalu delším než 60 sekund, ale kratším než 120 sekund. Doporučujeme nastavit časový limit selhání na 60s a interval opětovné kontroly clusteru na hodnotu větší než 60 sekund. Doporučujeme nenastavovat cluster-recheck-interval na malou hodnotu. Další informace najdete v dokumentaci k Pacemakeru nebo se obraťte na poskytovatele systému.
Metoda 2
Vraťte se k pacemakeru verze 1.1.16.
DŮLEŽITÉ
Tento skript musíte spustit, pokud používáte úložiště dotazů a aktualizujete z kumulativní aktualizace SQL Server 2017 2017 kumulativní aktualizace 2 (CU2) přímo na kumulativní aktualizaci SQL Server 2017 3 (CU3) nebo jakékoli novější kumulativní aktualizace. Tento skript nemusíte spouštět, pokud jste dříve nainstalovali kumulativní aktualizaci SQL Server 2017 3 (CU3) nebo novější kumulativní aktualizaci SQL Server 2017.
SET NOCOUNT ON;
DROP TABLE IF EXISTS #tmpUserDBs;
SELECT [database_id], 0 AS [IsDone]
INTO #tmpUserDBs
FROM master.sys.databases
WHERE [database_id] > 4
AND [state] = 0 -- must be ONLINE
AND is_read_only = 0 -- cannot be READ_ONLY
AND [database_id] NOT IN (SELECT dr.database_id FROM sys.dm_hadr_database_replica_states dr -- Except all local Always On secondary replicas
INNER JOIN sys.dm_hadr_availability_replica_states rs ON dr.group_id = rs.group_id
INNER JOIN sys.databases d ON dr.database_id = d.database_id
WHERE rs.role = 2 -- Is Secondary
AND dr.is_local = 1
AND rs.is_local = 1)
DECLARE @userDB sysname;
WHILE (SELECT COUNT([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0) > 0
BEGIN
SELECT TOP 1 @userDB = DB_NAME([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0
-- PRINT 'Working on database ' + @userDB
EXEC ('USE [' + @userDB + '];
DECLARE @clearPlan bigint, @clearQry bigint;
IF EXISTS (SELECT [actual_state] FROM sys.database_query_store_options WHERE [actual_state] IN (1,2))
BEGIN
IF EXISTS (SELECT plan_id FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27'')
BEGIN
DROP TABLE IF EXISTS #tmpclearPlans;
SELECT plan_id, query_id, 0 AS [IsDone]
INTO #tmpclearPlans
FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27''
WHILE (SELECT COUNT(plan_id) FROM #tmpclearPlans WHERE [IsDone] = 0) > 0
BEGIN
SELECT TOP 1 @clearPlan = plan_id, @clearQry = query_id FROM #tmpclearPlans WHERE [IsDone] = 0
EXECUTE sys.sp_query_store_unforce_plan @clearQry, @clearPlan;
EXECUTE sys.sp_query_store_remove_plan @clearPlan;
UPDATE #tmpclearPlans
SET [IsDone] = 1
WHERE plan_id = @clearPlan AND query_id = @clearQry
END;
PRINT ''- Cleared possibly affected plans in database [' + @userDB + ']''
END
ELSE
BEGIN
PRINT ''- No affected plans in database [' + @userDB + ']''
END
END
ELSE
BEGIN
PRINT ''- Query Store not enabled in database [' + @userDB + ']''
END')
UPDATE #tmpUserDBs
SET [IsDone] = 1
WHERE [database_id] = DB_ID(@userDB)
END
Pokud nasazujete aktualizaci do hybridního prostředí (například AlwaysOn, replikace, cluster a zrcadlení), doporučujeme před nasazením aktualizace projděte si následující články:
-
SQL Server kumulativní aktualizace clusteru s podporou převzetí služeb při selhání a proces
aktualizace Service Pack Poznámka Pokud nechcete použít proces postupné aktualizace, použijte aktualizaci následujícím postupem:-
Nainstalujte aktualizaci na pasivní uzel.
-
Nainstalujte aktualizaci na aktivní uzel (vyžaduje restartování služby).
-
-
Upgrade a aktualizace serverů skupiny dostupnosti, které využívají minimální výpadky a ztrátu
dat Poznámka Pokud jste povolili funkci AlwaysOn s katalogem SSISDB, přečtěte si informace o službě SSIS s Funkcí AlwaysOn, kde najdete další informace o tom, jak v těchto prostředích použít aktualizaci. -
Jak použít opravu hotfix pro SQL Server v transakční replikaci a topologii zrcadlení databáze
-
Jak použít opravu hotfix pro SQL Server v topologii replikace
SQL Server Kumulativní Aktualizace jsou v současné době vícejazyčné. Proto tento balíček kumulativní aktualizace není specifický pro jeden jazyk. Platí pro všechny podporované jazyky.
Jeden balíček kumulativní aktualizace obsahuje všechny dostupné aktualizace pro všechny součásti (funkce SQL Server 2017). Balíček kumulativní aktualizace však aktualizuje pouze ty součásti, které jsou aktuálně nainstalovány na SQL Server instanci, kterou vyberete k údržbě. Pokud je do instance přidána funkce SQL Server (například Analysis Services) po použití této kumulativní aktualizace, musíte tuto kumulativní aktualizaci znovu použít, aby se nová funkce aktualizovala na tuto cu.
Pokud dojde k dalším problémům nebo pokud je potřeba nějaké řešení potíží, možná budete muset vytvořit žádost o službu. Obvyklé náklady na podporu se budou vztahovat na další dotazy na podporu a na problémy, které nemají nárok na tento konkrétní balíček kumulativní aktualizace. Úplný seznam telefonních čísel služeb zákazníkům a podpory společnosti Microsoft nebo pokud chcete vytvořit samostatnou žádost o služby, přejděte na podpora Microsoftu webu.
Postup odinstalace této aktualizace
-
V Ovládací panely otevřete položku Programy a funkce a pak vyberte Zobrazit nainstalované aktualizace.
-
Vyhledejte položku, která odpovídá tomuto balíčku kumulativní aktualizace v části SQL Server 2017.
-
Stiskněte a podržte položku (nebo na ni klikněte pravým tlačítkem) a pak vyberte Odinstalovat.
Pokud chcete odinstalovat tuto kumulativní aktualizaci v Linuxu, musíte vrátit balíček zpět na předchozí verzi.
Další informace o vrácení instalace zpět najdete v tématu Vrácení zpět SQL Server.
Právní omezení informací třetích stran
Produkty třetích stran, které jsou popsány v tomto článku, jsou vyráběny společnostmi, které jsou nezávislé na Microsoftu. Společnost Microsoft neposkytuje žádnou záruku, ať už předpokládanou nebo jinou, týkající se výkonu nebo spolehlivosti těchto produktů.
Odkazy
-
Oznamujeme aktualizace modelu SQL Server přírůstkové údržby (ISM)
-
SQL Server Service Pack se od SQL Server 2017 přestaly používat
-
Skript pro určení, která verze a edice SQL Server Database Engine je spuštěná
-
Model přírůstkové údržby pro SQL Server k doručování oprav hotfix pro nahlášené problémy
-
Schéma pojmenování pro balíčky aktualizací softwaru Microsoft SQL Server
-
Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft