سامانه برنامهریزی منابع سازمانی Microsoft Dynamics 365 Business Central (که در گذشته با نام Microsoft Dynamics NAV شناخته میشد) در نسخه On-Premises یکی از جامعترین پلتفرمها برای مدیریت مالی، انبارداری، تولید و حسابداری صنعتی است. در سازمانهایی با هزاران سند حسابداری و تراکنشهای سنگین روزانه، بزرگترین چالش تیمهای فنی، افت سرعت صدور فاکتورها، ایجاد صفهای طولانی قفلشدگی (Lock Escalation) و خطاهای متوالی Deadlock در پایگاه داده Microsoft SQL Server است.
برای دستیابی به عملکرد روان و بلادرنگ، پیکربندی اختصاصی SQL Server، تیونینگ تنظیمات لایه سرویس میانی (Server Instance - NST) و مدیریت مکانیزه انتشار اکستنشنهای توسعهیافته با زبان AL حیاتی است. در این مقاله جامع، پارامترهای طلایی پایگاه داده، اسکریپتهای PowerShell استقرار اکستنشنها و مدیریت لایسنس دائمی آفلاین بدون اینترنت تشریح میگردد.
۱. توپولوژی معماری و جریان داده در Business Central On-Premises #
معماری نسخههای مدرن Business Central بر پایه سه لایه استاندارد بنا شده است:
۱. Web Client / Mobile App: رابط کاربری مدرن مبتنی بر HTML5/TypeScript که بدون نیاز به کلاینت قدیمی ویندوزی مستقیماً در مرورگر اجرا میشود.
۲. Navision Server Tier (NST): سرویس ویندوزی قدرتمند مبتنی بر .NET Core و CLR که وظیفه ترجمه منطق بیزنسی، اجرای کدهای AL و ارتباط پایگاه داده را بر عهده دارد.
۳. Microsoft SQL Server Database Engine: بانک اطلاعاتی متمرکز شامل جداول اسناد، دفتر کل (General Ledger) و متادیتای سیستم.
┌─────────────────────────────────────────┐
│ Web Browser / IIS Web Client │
│ 192.168.40.10 │
└───────────────────┬─────────────────────┘
│ OData / SOAP / Web Client (Port: 7085)
▼
┌─────────────────────────────────────────┐
│ Navision Server Tier (NST) Node │
│ 192.168.40.15 │
└───────────────────┬─────────────────────┘
│ TCP (Port: 1433)
▼
┌─────────────────────────────────────────┐
│ Microsoft SQL Server 2022 │
│ (TempDB, Buffer Pool, Memory) │
│ 192.168.40.20 │
└─────────────────────────────────────────┘
۲. تنظیمات طلایی بهینهسازی SQL Server برای Business Central #
دیتابیس Business Central دارای ساختار دادههای رابطهای فشرده با تراکنشهای همزمان بسیار بالا است. تنظیمات پیشفرض SQL Server برای این نوع بار کاری مناسب نیست و باید دستورات زیر بر روی دیتابیس اعمال گردد:
تنظیمات سطح پایگاه داده و شاخصها:
USE [master];
GO
-- فعالسازی سطح ایزولاسیون RCSI جهت جلوگیری از بلاک شدن کوئریهای خواندن توسط تراکنشهای ثبت فاکتور
ALTER DATABASE [BC_PROD] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
GO
-- جلوگیری از رشد تصادفی و افت سرعت در زمان ثبت اسناد مالی
ALTER DATABASE [BC_PROD] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = ON);
ALTER DATABASE [BC_PROD] SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE [BC_PROD] SET AUTO_UPDATE_STATISTICS_ASYNC ON;
GO
-- بهینهسازی پارامتر MAXDOP برای جلوگیری از اشغال تمام هستهها توسط گزارشهای سنگین
-- توصیه مایکروسافت برای Business Central: تنظیم MAXDOP روی 1 یا مقداری متناسب با سوکت NUMA
USE [BC_PROD];
GO
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1;
GO
-- فعالسازی بهینهسازی کوئریهای موقت (Optimize for Ad Hoc Workloads)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;
GO
بهینهسازی TempDB
پایگاه داده TempDB در فرآیندهای بستن حسابها و انبارگردانی مکرراً مورد استفاده قرار میگیرد. موارد زیر برای TempDB الزامی است:
-
ایجاد فایلهای داده TempDB به تعداد هستههای فیزیکی CPU (تا حداکثر ۸ یا ۱۶ فایل با سایز اولیه و نرخ رشد کاملاً یکسان).
-
قرار دادن فایلهای TempDB بر روی یک درایو اختصاصی NVMe جدا از فایل دادههای اصلی
MDF.
۳. تنظیمات لایه میانی Navision Server Tier (NST) #
در کنسول مدیریتی Business Central Server Administration یا از طریق ویرایش مستقیم فایل CustomSettings.config در شاخه سرویس، مقادیر زیر را بهینهسازی نمایید:
<!-- تنظیم سایز بافر تبادل داده رکوردها با SQL -->
<add key="DataCacheSize" value="10" /> <!-- تخصیص ۱۰ گیگابایت یا ۲۰ درصد رم برای کش دادههای خواندهشده -->
<add key="MetadataProviderCacheSize" value="2000" />
<add key="MaxConcurrentCalls" value="1000" />
<add key="SqlLongRunningThreshold" value="15000" /> <!-- ثبت هشدارهای کوئری بالای ۱۵ ثانیه در Event Viewer -->
<add key="EnableSqlParametersByDataArea" value="true" />
پس از اعمال این مقادیر، سرویس NST با سرعت چشمگیری گزارشها را از حافظه RAM پاسخ داده و فراخوانیهای تکراری دیسک SQL تا ۸۰٪ کاهش مییابد.
۴. انتشار خودکار و تست اکستنشنهای سفارشی AL با PowerShell #
در متدولوژی مدرن Business Central، تمامی شخصیسازیها، گزارشهای مالیاتی ایران، فرمهای انبارداری و اتصال به سامانههای مودیان در قالب پکیجهای AL Extensions (.app) پیادهسازی میشوند. اسکریپت زیر فرآیند انتشار امن را در محیط پروداکشن پیاده میکند:
Import-Module "C:\Program Files\Microsoft Dynamics 365 Business Central\230\Service\NavAdminTool.ps1"
$ServerInstance = "BC230"
$AppPath = "D:\Builds\CompanyCustom_TaxLocalization_1.0.4.0.app"
Write-Host "Publishing AL Extension..." -ForegroundColor Cyan
Publish-NAVApp -ServerInstance $ServerInstance -Path $AppPath -SkipVerification
Write-Host "Synchronizing Extension Schema with Database..." -ForegroundColor Yellow
Sync-NAVApp -ServerInstance $ServerInstance -Name "CompanyCustom_TaxLocalization" -Mode ForceSync
Write-Host "Installing and Activating Extension for All Tenants..." -ForegroundColor Green
Install-NAVApp -ServerInstance $ServerInstance -Name "CompanyCustom_TaxLocalization"
# تایید وضعیت استقرار و فعال بودن
Get-NAVAppInfo -ServerInstance $ServerInstance | Where-Object { $_.Name -like "*CompanyCustom*" }
۵. لایسنسینگ آفلاین FLF و پایداری در شبکه بدون اینترنت #
در دیتاسنترهای ایزوله که به شبکه مایکروسافت دسترسی ندارند، اعتبارسنجی لایسنس از طریق فایل کلید معتبر (.flf) انجام میشود. پکیج ارائهشده توسط Licentra:
-
لایسنس کامل Full User و ماژولهای پیشرفته: فعالسازی نامحدود ماژولهای تولید (Manufacturing)، زنجیره تامین و داراییهای ثابت.
-
بدون انقضا و بدون ارتباط خارجی: جلوگیری از قفل شدن دیتابیس در پایان سال مالی یا به دلیل عدم استعلام اینترنتی.
-
پشتیبانی کامل از شناسه گرانولهای اختصاصی AL: امکان توسعه آبجکتهای سفارشی در بازه شمارههای مجاز سازمانی.
# دستور ثبت و بارگذاری فایل لایسنس آفلاین بر روی سرور
Import-NAVServerLicense -ServerInstance "BC230" -LicenseFile "D:\Licenses\Licentra_BC_Enterprise.flf" -Database NavDatabase
Restart-NAVServerInstance -ServerInstance "BC230"
اعمال این گامهای معماری، تجربه کاربری روان، صدور آنی اسناد سنگین و ثبت بیوقفه گزارشهای سازمانی را برای هزاران کاربر همزمان به همراه خواهد داشت.

