
CU14 چه تغییراتی برای SQL Server 2022 داره
- تکنولوژی
- 1404/02/29
- 29 اردیبهشت 1404
در این مقاله به بررسی تغغیرات موجود در cumulativeupdate14 برای SQl Server 2022 میپردازیم
سناریوی هر کدوم رو هم در صورت امکان برای تست در محیط لوکال ارایه میدیم
نکته اینکه برای سناریو های تست دو تا راه هست
1) یکی اینکه دو تا Instance روی دو تا سرور یا VM نصب کرنید یکی شون رو به نسخه قبلی آپدیت کنید و یکی شون رو به نسخه بعدی
2) یکی دیگه هم میتونید تست ها رو ی روی محیط خودتون قبل از اپدیت انجم بدین و بعد از آپدیت کردن مجددا بررسی کنید
خب بریم سراغ تغییران این آپدیت
- Bug 3217208 – مسیر جدید mssql-tools در کانتینر
شرح: از CU14 به بعد، مسیر /opt/mssql-tools18/bin جایگزین /opt/mssql-tools/bin شده است.
سناریوی تست:
Code |
# ورود به کانتینر SQL Server docker run -it mcr.microsoft.com/mssql/server:2022-latest bash
# بررسی وجود sqlcmd ls /opt/mssql-tools18/bin/sqlcmd
# اجرای تست اتصال با ابزار جدید /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P “<YourPassword>” -Q “SELECT @@VERSION” |
- Bug 3110961 – مشکل نمایش کاراکترهای غیر ASCII در لاگ Maintenance Plan
شرح: لاگ عملیات نگهداری در صورت وجود کاراکتر غیر ASCII مانند فارسی، متن خراب نمایش میداد.
سناریوی تست:
Code |
EXEC msdb.dbo.sp_add_job @job_name = N‘UnicodeLogTest’; EXEC msdb.dbo.sp_add_jobstep @job_name = N‘UnicodeLogTest’, @step_name = N‘Step1’, @subsystem = N‘TSQL’, @command = N‘RAISERROR(N”خطای تستی برای لاگ”, 16, 1)’, @database_name = N‘master’; EXEC msdb.dbo.sp_add_jobserver @job_name = N‘UnicodeLogTest’; EXEC msdb.dbo.sp_start_job @job_name = N‘UnicodeLogTest’; — بررسی لاگ در msdb.dbo.sysjobhistory |
- Bug 3278705 – خطای VSS هنگام بازیابی با دیتابیس حذفشده
شرح: اگر دیتابیس حذف شده باشد، در بازیابی VSS خطای GetVolumePathName رخ میدهد.
سناریوی تست:
- ایجاد چند دیتابیس، حذف یکی از آنها.
- اجرای بازیابی با Windows Backup یا Veeam.
- بررسی System Event Log و SQL Server Log برای ارور مرتبط.
- Bug 3285752 – توقف Launchpad هنگام خطای شروع
شرح: Launchpad هنگام خطا در مرحله شروع به درستی متوقف نمیشود.
سناریوی تست:
- فعالسازی Launchpad و ایجاد خطا در Script R یا Python.
- بررسی سرویس Launchpad و رفتار آن پس از خطا.
- Bug 2897811 – تاخیر در Sync شدن Replica ثانویه در محیط Cloud
شرح: در محیط Cloud با چند replica محلی و یکی یا بیشتر remote، وضعیت Not Synchronizing ممکن است چند دقیقه طول بکشد.
سناریوی تست:
- ایجاد Availability Group با پیکربندی فوق.
- اجرای چند failover پیاپی.
- بررسی وضعیت replica در SSMS یا DMV ها مثل:
SELECT replica_server_name, synchronization_state_desc
FROM sys.dm_hadr_database_replica_states
- Bug 3088149 – خطای Assertion هنگام استفاده از FILESTREAM در AG
شرح: هنگام Log Capture از تراکنشهای FILESTREAM، Assertion ممکن است رخ دهد.
سناریوی تست:
- AG شامل دیتابیس FILESTREAM راهاندازی شود.
- درج فایل و بررسی پایداری و عدم تولید dump.
- Bug 3157066 – اضافه شدن Performance Counter ها هنگام Timeout در Health Check
شرح: در لاگهای Cluster، شمارندههای عملکردی هنگام بروز timeout ثبت میشوند.
سناریوی تست:
- ایجاد تأخیر در شبکه یا Disk IO
- بررسی لاگ FailoverCluster برای counters اضافهشده
- Bug 3207515 – عبور مصرف RAM از مقدار مشخصشده در Linux
شرح: مقدار memory.memorylimitmb رعایت نمیشود و مصرف RAM بیش از حد مجاز میرود.
سناریوی تست:
# تنظیم محدودیت حافظه
export MSSQL_MEMORY_LIMIT_MB=2048
# اجرای query سنگین و مانیتور مصرف RAM با ps یا top
- Bug 3155852 – خطای Assertion هنگام استفاده از UTF-8 و WITH RESULT SETS
شرح: هنگام استفاده از COLLATION UTF-8 و گزینه WITH RESULT SETS ممکن است خطای sosmemobj رخ دهد.
سناریوی تست:
Code |
— دیتابیس با collation UTF-8 CREATE DATABASE utf8db COLLATE Latin1_General_100_CI_AS_SC_UTF8; GO USE utf8db;
— اجرای دستور با WITH RESULT SETS EXEC (‘SELECT ”تست”’) WITH RESULT SETS ((col1 NVARCHAR(100))); |
- Bug 3157452 – رفع نشت Plan Cache و Access Violation در CE Feedback
شرح: هنگام فعالبودن CE Feedback ممکن است نشت Plan یا خطای AV رخ دهد.
سناریوی تست:
Code |
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK = ON; EXEC sp_executesql N‘SELECT COUNT(*) FROM dbo.Big WHERE Val = @val’, N‘@val INT’, 10; EXEC sp_executesql N‘SELECT COUNT(*) FROM dbo.Big WHERE Val = @val’, N‘@val INT’, 900; — مشاهده DMV ها برای CE Feedback SELECT * FROM sys.query_store_query_hints; |
- Bug 3236328 – بهبود تخمین کاردینالیتی برای آمار تکپلهای
شرح: زمانی که Histogram فقط یک پله دارد، تخمین CE بهبود یافته است.
سناریوی تست:
Code |
— جدول با یک مقدار برای ایجاد یک پله CREATE TABLE SingleStat(ID INT); INSERT INTO SingleStat VALUES (1000); UPDATE STATISTICS SingleStat WITH FULLSCAN;
— اجرای کوئری خارج از بازه SELECT * FROM SingleStat WHERE ID = 2000; — بررسی Estimated Plan برای دقت تخمین |
- Bug 3222639 – مصرف CPU غیرضروری توسط Change Tracking حتی در حالت غیرفعال
شرح: وظیفه Auto Cleanup برای CT حتی اگر در دیتابیسی غیرفعال باشد، باعث مصرف CPU میشود.
سناریوی تست:
Code |
— بررسی وضعیت Change Tracking SELECT * FROM sys.change_tracking_databases;
— اگر دادهای در sys.syscommittab مانده: ALTER DATABASE [YourDB] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON); ALTER DATABASE [YourDB] SET CHANGE_TRACKING = OFF; — بررسی پاکسازی دادههای مانده در MSchange_tracking_history |