Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Simptomi

Pieņemsim, ka esat izveidojis pieejamības grupu, izmantojot Microsoft SQL Server klauzulu WITH DTC_SUPPORT = PER_DB . Mēģinot izpildīt priekšrakstu saglabāt transakciju transakciju vai sistēmas saglabāto procedūru , piemēram, sp_executesql,tiek parādīts kāds no šiem kļūdas ziņojumiem:

Msg 627, Level 16, State 0, Line rindas numurs% Nevar izmantot darbību saglabāt dalītā transakcijā. Msg 12324, Level 16, State 100, Line rindas numurs% Dalītā transakciju (DTC) netiek atbalstītas ar atmiņu optimizētām tabulām. Kļūda: 3933, nopietnība: 16, stāvoklis: 1. Nevar paaugstināt transakciju uz dalītu transakciju, jo šajā transakcijā ir aktīvs saglabāšanas punkts.

Cēlonis

Ja datu bāze vienmēr ir iespējota ar DTC_SUPPORT = PER_DB, kamēr transakcija ir saistīta ar vairākām datu bāzēm, transakcija tiek paaugstināta uz MSDTC transakciju SQL Server 2016 SP2 un SQL Server 2017. MSDTC transakcijās ir ierobežojumi, piemēram, saglabāt punktus nevar izmantot, atmiņā optimizētās tabulas nevar izmantot.

Dažos gadījumos starpdatu bāzes transakcijas notiek nevis tāpēc, ka lietotājiem ir transakcijas ar divām lietotāju datu bāzēm, bet tā kā darījumi ietver pašreizējās datu bāzes un sistēmas datu bāzes (šablons, tempdb, modelis, sistēmas resursu datu bāze). Tā kā sistēmas resursu datu bāze faktiski ir tikai lasāma, nav nepieciešams PAAUGSTINĀT MSDTC transakciju, ja krusteniskā datu bāzes transakcija ietver sistēmas resursu datu bāzi, bet ne citas sistēmas datu bāzes.

Risinājums

Labojumi, kas ieviesti šajā KB, pārlec uz MSDTC transakciju, ja sistēmas resursu datu bāze un lietotāja datu bāze, kas ir daļa no pieejamības grupas, kas iespējota PER_DB DTC, ir saistīta ar savstarpējās datu bāzes transakciju vienā un tajā pašā SQL Server instancē.

Tāpēc, ja iepriekš uzskaitīto kļūdu sākotnējais cēlonis ir starpdatu bāzes transakcija, kas ietver sistēmas resursu datu bāzi, šis labojums to adresēs. Dažkārt lietotājs var skatīt iepriekš norādītās kļūdas ar vienu un to pašu pamata iemeslu. Tālāk ir uzskaitīti nosacījumi, kas attiecas uz šo labojumu.

  • Datu bāze ir daļa no pieejamības grupas vienmēr, kas iespējota ar DTC_SUPPORT = PER_DB.

  • Krusteniskā datu bāzes transakcija ir saistīta ar šo datu bāzi un sistēmas resursu datu bāzi tajā pašā SQL Server instancē.

  • Iekšējā datu bāzes transakcijā tiek izmantota SAGLABĀTā TRANSAKCIJA vai ir iesaistīti ar atmiņu optimizētas tabulas.

Šāda transakcija neizdosies ar iepriekš norādītajām kļūdām, neizmantojot šo labojumu. Izmantojot šo labojumu, tālāk ir jāveic šāda darbība.

Piezīme. Šis labojums novērš datu bāzes transakcijas, kas ir saistītas ar sistēmas resursu datu bāzi, bet jebkura datu bāzes transakcija, kas ietver lietotāju datu bāzes un ietver priekšrakstu saglabāt transakciju , joprojām neizdodas un ir jāpārraksta.

Šī problēma ir novērsta šajā SQL Server kumulatīvajā atjauninājumā:

Kumulatīvais atjauninājums 7 SQL Server 2017       

Kumulatīvais atjauninājums 1 SQL Server 2016 SP2

Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:

Jaunākais SQL Server 2017 kumulatīvais atjauninājums

Jaunākais SQL Server 2016 kumulatīvais atjauninājums

Papildinformācija

Papildu informācija par DTC_SUPPORT = PER_DB, atmiņas optimizētās tabulas, saglabāt transakciju var atrast, izmantojot tālāk norādītās saites.

Datu bāzes transakcijas tajā pašā SQL Server instances saistīt arhttps://docs.Microsoft.com/en-us/SQL/Database-Engine/Availability-groups/Windows/transactions-Always-On-Availability-and-Database-Mirroring?View=SQL-Server-2017#sql-server-2016-sp1-and-before-support-for-cross-database-transactions-within-the-same-sql-server-instanceatmiņu, optimizētās tabulassaista šo elementu ar https://docs.Microsoft.com/en-us/SQL/relational-Databases/in-Memory-OLTP/transactions-with-Memory-Optimized-Tables?View=SQL-Server-2017#limitationssaglabāt transakciju saiti šī daļa uz https://docs.Microsoft.com/en-us/SQL/t-SQL/Language-elements/Save-Transaction-Transact-SQL?View=SQL-Server-2017#remarks

https://docs.microsoft.com/sql/database-engine/availability-groups/windows/configure-replication-for-always-on-availability-groups-sql-server?view=sql-server-2017#step2

Statusa

Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".

Atsauces

Uzziniet par terminoloģiju , ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×