تمكين بروتوكول TCP في SQL Server Express 2019 باستخدام C#
تعتبر خدمة SQL Server Express 2019 واحدة من أكثر الحلول شيوعًا لإدارة قواعد البيانات على أنظمة ويندوز. واحدة من السمات الأساسية التي يحتاجها المطورون هي تمكين بروتوكول TCP (Transmission Control Protocol) لضمان إمكانية الوصول إلى قاعدة البيانات عبر الشبكة. في هذا المقال، سنتناول كيفية تمكين بروتوكول TCP لـ SQL Server Express 2019 من خلال كود C#، وسنستعرض التحديات التي قد تواجهها وكيفية تجاوزها.
الخطوات الأولية لتمكين بروتوكول TCP في SQL Server Express 2019
قبل البدء في كتابة الكود، يجب أن نتأكد من تثبيت SQL Server Express 2019 بشكل صحيح ووجود الإذن الإداري على النظام. بروتوكول TCP هو ما يسمح للتطبيقات بالتواصل مع قاعدة البيانات بصورة فعالة، ويعد تمكينه خطوة أساسية في إعداد بيئة العمل.
الكود البرمجي لتمكين بروتوكول TCP
المدخل التقليدي هو استخدام مكتبة Microsoft.SqlServer.Management.Smo.Wmi
للتفاعل مع خادم SQL. الكود البسيط يتضمن الأسطر التالية:
using Microsoft.SqlServer.Management.Smo.Wmi;
ManagedComputer mc = new ManagedComputer();
ServerProtocol srvprcl = mc.ServerInstances[0].ServerProtocols[2];
srvprcl.IsEnabled = true;
srvprcl.Alter();
ومع ذلك، قد تواجه مشكلة عندما تجد أن mc.ServerInstances.count
تساوي صفر. هذا يشير إلى أن الكود لا يعثر على أي مثيل للخادم، وهو أمر يظهر غالبا عند عدم وجود الصلاحيات اللازمة.
حل مشكلة الوصول إلى Server Instances
إذا كنت تواجه الصعوبة المشار إليها، يمكن استخدام PowerShell كحل بديل. البرنامج النصي التالي يقوم بتفعيل بروتوكول TCP بمجرد تنفيذه بصورة يدوية وبالصلاحيات الإدارية:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Module -Name SqlServer -AllowClobber -Force
Import-Module SQLServer -Force
$wmi = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer
$uri = "ManagedComputer[@Name="" + (Get-Item env:\computername).Value + ""]/ServerInstance[@Name="SQLEXPRESS"]/ServerProtocol[@Name="Tcp"]"
$Tcp = $wmi.GetSmoObject($uri)
$Tcp.IsEnabled = $true
$Tcp.Alter()
تأكد من تشغيل البرنامج النصي باستخدام حساب له صلاحيات إدارية. بمجرد نجاح هذا النص، يمكننا الانتقال إلى خطوة الأتمتة عبر C#.
أتمتة تشغيل PowerShell من تطبيق C#
يمكنك استدعاء البرنامج النصي المذكور أعلاه من تطبيق C# باستخدام الكود التالي:
using System.Diagnostics;
var ps1File = @"C:\scripts\enable_tcp.ps1";
var startInfo = new ProcessStartInfo()
{
Verb = "runas",
FileName = "powershell.exe",
Arguments = $"-NoProfile -ExecutionPolicy Bypass -File \"{ps1File}\"",
UseShellExecute = false
};
Process.Start(startInfo);
هذا الكود يضمن تشغيل PowerShell بصلاحيات مرتفعة، مما يسمح له بتفعيل بروتوكول TCP بنجاح.
التحديات الممكنة وكيفية التغلب عليها
إذا واجهت مشكلات مثل عدم العثور على ServerInstances
، يجب التأكد من أن عملية PowerShell المستخدمة لاتزال تحت امتيازات الأمان المطلوبة. في بعض الحالات، قد تحتاج إلى ضبط إعدادات الأمان أو التحقق من أن SQL Server يعمل بشكل صحيح. تأكد من أن المجموعة المناسبة من خدمات Windows متاحة وتعمل.
الخاتمة
تمكين بروتوكول TCP لـ SQL Server Express 2019 يحتاج إلى القليل من الجهد الإضافي، خاصة عند استخدام C#. لكن من خلال استخدام PowerShell وإعطاء صلاحيات كافية، يمكنك تحقيق ذلك بسهولة.
إذا كنت تبحث عن كيفية تفعيل بروتوكول TCP لـ SQL Server Express 2019 عن طريق كود C#، ستجد أن استخدام PowerShell يعد خيارًا موثوقًا. بعد قراءة هذا المقال، تأمل أن تكون قد حصلت على فكرة واضحة حول كيفية تمكين هذا البروتوكول مع معالجة التحديات التي قد تواجهها. لا تتردد في تجربة هذه الحلول وشارك تجربتك مع الآخرين.