SQL Server Native Client که به اختصار SNAC نامیده میشود، یک کتابخانهی دسترسی به داده است که برنامهها را به پایگاه دادهی Microsoft SQL Server وصل میکند. این کتابخانه دو رابط برنامهنویسی ODBC و OLE DB را در یک بسته ارائه میدهد. برنامههایی که از ADO استفاده میکنند هم از طریق همان ارائهدهندهی OLE DB با SQL Server ارتباط میگیرند.
برای استفاده از آن لازم نیست SQL Server روی همان سیستم نصب باشد. کافی است کتابخانه روی سیستم کلاینت نصب شده باشد و دسترسی شبکهای به سروری که پایگاه داده روی آن قرار دارد برقرار باشد. به همین دلیل بسیاری از نرمافزارها، بهخصوص برنامههای قدیمی دسکتاپ و سیستمهای حسابداری و اتوماسیون، پیشنیاز نصب آن را در مستندات خود ذکر میکنند.

چرا SNAC به جای درایورهای عمومی؟
پیش از SNAC، برنامهها از درایورهای عمومی ویندوز (MDAC/WDAC) استفاده میکردند. این درایورها قابلیتهای جدید SQL Server را نمیشناسند. مزیت SNAC این است که امکانات مخصوص SQL Server را در اختیار برنامه میگذارد:
- نوع دادهی XML و انواع دادهی بزرگ مانند
varchar(max)وnvarchar(max)وvarbinary(max) - انواع تعریفشده توسط کاربر (UDT) و Table-Valued Parameters (در نسخههای جدیدتر)
- MARS (Multiple Active Result Sets) برای اجرای چند دستور روی یک اتصال
- Snapshot Isolation برای کاهش قفلشدن دادهها بین کاربران
- Query Notifications برای مطلعشدن برنامه از تغییر دادهها
- Database Mirroring و در نسخهی 11 پشتیبانی از Always On Availability Groups با گزینهی
MultiSubnetFailover - رمزنگاری اتصال و احراز هویت یکپارچه ویندوز (Windows Authentication)
اگر با C# یا VB.NET و .NET Framework کار میکنید، ارائهدهندهی مخصوص .NET (مثل Microsoft.Data.SqlClient) انتخاب سادهتر و بهتری است و نیازی به SNAC ندارد. SNAC برای برنامههای native مثل C++ و VB6 و Delphi و Access و ابزارهای مبتنی بر ODBC یا OLE DB کاربرد بیشتری دارد.
نسخههای SNAC و نام درایورها
هر نسخهی SNAC همراه با یک نسخهی SQL Server عرضه شد. در رشتهی اتصال باید نام درست درایور را وارد کنید:
| همراه با | نسخهی SNAC | ارائهدهندهی OLE DB | نام درایور ODBC |
|---|---|---|---|
| SQL Server 2005 | 9.0 |
SQLNCLI |
SQL Native Client |
| SQL Server 2008 / 2008 R2 | 10.0 |
SQLNCLI10 |
SQL Server Native Client 10.0 |
| SQL Server 2012 | 11.0 |
SQLNCLI11 |
SQL Server Native Client 11.0 |
نمونه رشتهی اتصال
اتصال از طریق ODBC با احراز هویت ویندوز:
Driver={SQL Server Native Client 11.0};Server=myServer\myInstance;Database=myDB;Trusted_Connection=yes;
اتصال از طریق OLE DB (مثلا در ADO) با نام کاربری و رمز عبور:
Provider=SQLNCLI11;Server=myServer;Database=myDB;UID=myUser;PWD=myPassword;
مشکلات رایج و راهحلها
- خطای «Data source name not found and no default driver specified»: یعنی SNAC یا نسخهی مورد نیاز برنامه روی سیستم نصب نیست، یا معماری آن (32 بیتی یا 64 بیتی) با برنامه هماهنگ نیست. برنامهی 32 بیتی به درایور 32 بیتی نیاز دارد، حتی روی ویندوز 64 بیتی.
- خطای «Provider not registered»: ارائهدهندهی OLE DB با نام مورد نظر نصب نشده است. نام موجود در رشتهی اتصال را با نسخهی نصبشده مقایسه کنید.
- خطای اتصال به سرور: بررسی کنید سرویس SQL Server Browser فعال باشد (برای instanceهای نامدار)، پروتکل TCP/IP در SQL Server Configuration Manager فعال باشد و فایروال پورت
1433یا پورت instance را مسدود نکرده باشد. - مشکل TLS 1.2 در سیستمهای امنشده: نسخههای قدیمی SNAC برای کار با TLS 1.2 به بهروزرسانی نیاز دارند.
SNAC منسوخ شده است
این بخش برای تصمیمگیری مهمترین قسمت مقاله است. مایکروسافت SNAC را از زمان SQL Server 2012 منسوخ (deprecated) اعلام کرده و SQL Server 2022 دیگر آن را همراه خود ندارد. SNAC 11 هم قابلیت جدیدی دریافت نمیکند. برای پروژههای جدید، بهجای آن از درایورهای زیر استفاده کنید:
- Microsoft ODBC Driver for SQL Server (نسخههای 17 و 18) برای ODBC
- Microsoft OLE DB Driver for SQL Server (نام ارائهدهنده
MSOLEDBSQL) برای OLE DB
این درایورها از SQL Server 2012 تا نسخههای جدید و همچنین Azure SQL Database پشتیبانی میکنند و بهروزرسانیهای امنیتی و پشتیبانی از پروتکلهای جدید را دریافت میکنند. در نسخهی 18 درایور ODBC، رمزنگاری اتصال بهصورت پیشفرض اجباری است. اگر سرور شما گواهی معتبر ندارد، باید گواهی مناسب نصب کنید یا برای محیط آزمایشی از TrustServerCertificate=yes استفاده کنید.
نمونهی رشتهی اتصال با درایور جدید:
Driver={ODBC Driver 18 for SQL Server};Server=myServer;Database=myDB;Trusted_Connection=yes;Encrypt=yes;
چه زمانی هنوز به SNAC نیاز دارید؟
اگر نرمافزار قدیمیای دارید که صراحتاً به SQLNCLI11 وابسته است و سورس آن را ندارید، نصب SNAC 11 همچنان راهحل عملی است. در این حالت میتوانید این کارها را انجام دهید:
- نسخهی SNAC مورد نیاز برنامه را مطابق معماری آن (x86 یا x64) نصب کنید.
- در صورت امکان، از تولیدکنندهی نرمافزار بخواهید نسخهی سازگار با MSOLEDBSQL یا ODBC Driver 17/18 ارائه دهد.
- برای سرورهایی که در معرض شبکه قرار دارند، سطح امنیتی اتصال را جداگانه بررسی کنید.
دریافت SQL Server Native Client
بسته به نگارش SQL Server و نیاز برنامهی شما ممکن است به نگارشهای مختلف SNAC نیاز داشته باشید.
برای دریافت SQL Server Native Client به این صفحه مراجعه کنید
این صفحه مربوط به بستهی SNAC نسخهی 2012 است. برای پروژههای جدید، درایورهای ODBC و OLE DB مایکروسافت را از بخش دانلود درایورهای SQL Server در مستندات رسمی مایکروسافت دریافت کنید.
