خانه/ وبلاگ/ Network-related or instance-specific error
SQL Server

رفع خطای A network-related or instance-specific error occurred

عیب‌یابی ۲۷ مرداد ۱۴۰۴ ۹ دقیقه مطالعه

متن کامل این خطا معمولاً این شکلی است:

error
A network-related or instance-specific error occurred while establishing a
connection to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured
to allow remote connections. (provider: Named Pipes Provider, error: 40 -
Could not open a connection to SQL Server)

این خطا یعنی برنامه‌ی کلاینت (SSMS، یک اپلیکیشن، یا ابزار دیگر) اصلاً نتوانسته یک کانال ارتباطی شبکه‌ای با SQL Server برقرار کند — قبل از اینکه حتی نوبت به بررسی نام‌کاربری/رمزعبور برسد. علت تقریباً همیشه یکی از این‌هاست: سرویس خاموش، نام سرور/Instance اشتباه، پروتکل غیرفعال، یا فایروال.

این نوشته نسخه‌ی عمیق‌تر و متمرکز روی «Error 40» است. اگر پیام خطای شما دقیقاً همین متن را نداشت، راهنمای عمومی‌تر رفع خطای Cannot Connect to SQL Server در SSMS را هم ببین.

مرحله ۱ — سرویس SQL Server اجرا می‌شود؟

در SQL Server Configuration Manager بخش SQL Server Services را باز کن. اگر SQL Server (MSSQLSERVER) خاموش است، Start کن.

مرحله ۲ — سرویس SQL Server Browser فعال است؟

اگر با یک Named Instance (مثل SQLEXPRESS) کار می‌کنی، سرویس SQL Server Browser باید در حال اجرا باشد؛ این سرویس مسئول پیدا کردن پورت درست هر Instance روی شبکه است:

SQL Server Configuration Manager
SQL Server (SQLEXPRESS) ● Running
SQL Server Browser ● Stopped ← این را Start کن

مرحله ۳ — پروتکل‌های شبکه فعال هستند؟

در همان ابزار، مسیر SQL Server Network Configuration → Protocols for [نام Instance] را باز کن و مطمئن شو TCP/IP روی Enabled است. اگر خاموش بود، فعالش کن و سرویس SQL Server را ری‌استارت کن.

مرحله ۴ — نام سرور و فرمت اتصال را دوباره بررسی کن

سناریوفرمت درست
Default Instance محلیlocalhost یا .
Named Instance محلیlocalhost\SQLEXPRESS
سرور روی شبکه، پورت دستی192.168.1.20,1433

مرحله ۵ — تست با ping و telnet

برای اطمینان از اینکه مشکل واقعاً شبکه‌ای است، از سیستم کلاینت این دستورها را در Command Prompt امتحان کن:

cmd
ping 192.168.1.20
telnet 192.168.1.20 1433

اگر telnet نتواند وصل شود، تقریباً قطعی است که فایروال یا تنظیمات شبکه پورت 1433 را می‌بندد.

مرحله ۶ — بررسی فایروال

یک قانون Inbound در Windows Defender Firewall برای پورت TCP 1433 (و در صورت استفاده از SQL Browser، پورت UDP 1434) اضافه کن.

جمع‌بندی

این خطا تقریباً همیشه یک مشکل «رسیدن به سرور» است، نه مشکل هویت. با بررسی ترتیبی سرویس SQL Server، سرویس Browser (برای Named Instance)، فعال‌بودن TCP/IP، درستی نام سرور، و در نهایت فایروال، معمولاً مشکل کاملاً برطرف می‌شود.

می‌خوای SQL Server را از پایه یاد بگیری؟

دوره‌ی رایگان SQLFarsi را با درس معماری SQL Server شروع کن.

شروع یادگیری