LocalDB چیست؟
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: سه دقیقه

LocalDB نسخه‌ای جدید از Sql server express است که به توسعه دهندگان این اجازه را می‌دهد تا با نصب آن، از نصب کامل دیگر نسخه‌های Sql server جلوگیری نمایند. LocalDB برای برنامه‌هایی که به صورت Local و بر روی یک سیستم اجرا می‌شوند مورد استفاده قرار می‌گیرد. 

مزایای استفاده از این نسخه

  • فایل نصب با حجم بسیار کم. (28.2MB برای نسخه 32 بیتی و 33.7MB برای نسخه 64بیتی)
  • سادگی ( بدون نیاز به انجام تنظیمات خاص بر روی سیستم)
  • اجرا در محیطهایی که کاربر جاری دسترسی مدیریتی ندارد.(برای اجرای آن نیاز به Permissionهای مدیریتی نیست و یک کاربر سطح پایین هم می‌تواند آن را اجرا کند)
  • سادگی نصب
  • همانند Sql server Express سازگاری کاملی با T-Sql دارد. همچنین از Stored Procedureها ، داده‌های جغرافیایی و مکانی ( geometry and geography ها) ، Triggers و View‌ها پشتیبانی می‌کند.
  • سازگاری با Provider معمولی Sql server
  • عدم اجرای سرویس خاصی در حافظه برای مدیریت دیتابیس. پروسس‌های LocalDb هر زمان که نیاز باشد اجرا می‌شوند و هر زمان که به آنها نیاز نداشته باشیم به صورت اتوماتیک متوقف می‌شوند.
  • پشتیبانی از خصوصیت AttachDbFileName  در کانکشن استرینگ جهت استفاده از فایل بانک اطلاعات به صورت مستقیم
  • سرویس پک‌های جدید جهت LocalDB به راحتی برروی نسخه موجود نصب میشوند و نسخه قبلی را به روز رسانی میکنند.
  • نصب یک LocalDB برای همه کاربران یک کامپیوتر
  • پشتیبانی کامل از Silent Installation
  • امکان استفاده از آن توسط Asp.net
  • پشتیبانی از XML (XQuery و XPath) و BLOB
  • پشتیبانی از Ado.net sync framework
  • پشتیبانی از LINQ
  • پشتیبانی از Distributed transactions
  • کانکشن‌های نامحدود (البته به صورت Local)
 
 نیازمندی‌های نصب
  • نیاز به نصب Sql server 2012 native client . این مورد به همراه LocalDB روی سیستم نصب نمیشود
  • نیاز به دسترسی مدیریتی جهت نصب 
  • 140MB فضای خالی دیسک سخت
  • به روز رسانی دات نت فریم ورک 4 به 4.0.2 و یا نسخه‌های بالاتر
محدودیت ها
  • عدم پشتیبانی از Windows xp ، Window server 2003 و Windows 2000
  • عدم امکان نصب نسخه 32 بیتی بر روی ویندوز 64 بیتی (حتما باید نسخه 64 بیتی آن را نصب کنید)
  • فقط می‌توان به صورت Local از آن استفاده کرد. امکان استفاده تحت شبکه وجود ندارد و  فقط به کانکشن‌های Local پاسخ می‌دهد.
  • فقط توسط Sql server 2012 management studio در دسترس می‌باشد. LocalDB را نمی‌توان از طریق Management studio‌های قدیمی مدیریت کرد.
  • عدم پشتیبانی Visual Studio 2010 از LocalDB
  • عدم اجرا بر روی موبایل‌های هوشمند
  • محدودیت سایز بانک اطلاعات :  10GB
  • عدم پشتیبانی از قابلیت FileStream
  • محدودیت استفاده از فقط یک CPU
  • عدم امکان Debuging دستورات Sql در هنگام اتصال به LocalDB
 نحوه نصب
ابتدا Sql server LocalDB را دانلود نمایید. سپس برای نصب آن بر روی سیستم فقط کافی است که فایل نصاب برنامه را اجرا نموده و License مربوطه را قبول نمایید.همچنین در صورت نیاز به Silent Installation کافی است که از دستور زیر در خط فرمان استفاده نمایید: 
 msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES
همچنین می‌توانید مراحل نصب را توسط فایل نصاب انجام دهید: 


نحوه اتصال به LocalDB توسط Sql Server Management Studio 

اگر net framework. خود را از نسخه 4 به 4.0.2 و یا نسخه‌های بعد از آن به روز رسانی کرده باشید می‌توان توسط Sql Server 2012 Management Studio به Sql server LocalDB وصل شد. عبارت local)\v11.0) را به عنوان نام سرور وارد نمایید.

مجددا لازم به ذکر است که امکان اتصال توسط Management Studio‌های قبلی به بانک LocalDB امکان پذیر نمی‌باشد. 


برای مطالعه بیشتر

  • #
    ‫۱۲ سال و ۱ ماه قبل، پنجشنبه ۱۶ شهریور ۱۳۹۱، ساعت ۱۴:۰۷
    سلام 
    تا جایی که من اطلاع دارم نسخه rtm از vs 2010 ساپورت نمیشه
    • #
      ‫۱۲ سال و ۱ ماه قبل، پنجشنبه ۱۶ شهریور ۱۳۹۱، ساعت ۱۶:۳۷
      هیچ بانک اطلاعاتی خاصی الزاما نیازی به VS.NET ندارد. کانکشن استرینگ را تنظیم می‌کنید و بعد می‌تونید با کد نویسی حتی جدول، فیلد و تمام تنظیمات مورد نظر را اضافه کنید.
      ضمن اینکه خیلی از توانایی‌های آن با VS.NET 2010 هم کار می‌کند (^).
      • #
        ‫۱۲ سال و ۱ ماه قبل، سه‌شنبه ۲۸ شهریور ۱۳۹۱، ساعت ۲۰:۲۹
        1. ایا LocalDB جایگزینی برای SqlExpress خواهد بود در ادامه؟ (اینجا انتهای پاراگراف اول منظورش چیه دقیقا؟  SQL Server ExpressLocalDB should be used in place of the SQL Server Express user instance feature which is deprecated )
        2.  هیچ شکلی نمی‌توان تحت شبکه کار کرد با این نسخه؟ مثلا جایی که قراره 3 تا سیستم بصورت کلاینت/سرور کار کنن نمی‌شه فایل دیتابیس روی یک سیستم باشه و از رو 2تای دیگه بهش کانکت شد؟ سنارویی که خیلی وقتا ممکنه استفاده بشه
        3. بهترین راه برای سناریوهایی مثل مورد 2 که مثال زدم چیه؟ (یک محیط و یک برنامه معمولی که قرار نیست sql server بصورت full نصب بشه رو سرور) آیا می‌شه با خیال راحت از SqlServer Express Edition استفاده کرد؟
        • #
          ‫۱۲ سال و ۱ ماه قبل، سه‌شنبه ۲۸ شهریور ۱۳۹۱، ساعت ۲۰:۴۸
          - خیر. نام کامل این محصول «SQL Server Express LocalDB » است + نسخه «Microsoft® SQL Server® 2012 Express» از اینجا قابل دریافت است. بنابراین جایگزین یا حذف نشده.
          - هدف اصلی از LocalDb ارائه یک «embedded database» جدید از طرف مایکروسافت است.
          بنابراین هدف آن استفاده تحت شبکه نیست. جاهایی استفاده می‌شود که تک کاربر نهایی دانش آنچنانی در نصب و نگهداری بانک‌های اطلاعاتی ندارد و برنامه و سیستم بانک اطلاعاتی او یکپارچه به نظر می‌رسند. از این نمونه بانک‌های اطلاعاتی embedded باز هم هستند. مانند Firebird Embedded ، SQLite، SQL CE و غیره.
          - نسخه Express تحت شبکه قابل استفاده است؛ البته نیاز به تنظیم دارد.

          • #
            ‫۱۱ سال و ۱۱ ماه قبل، یکشنبه ۷ آبان ۱۳۹۱، ساعت ۰۰:۰۵
            - میشه لطفا بگین منظور شما از تحت شبکه دقیقا چیه؟
            - برنامه MVC4 که با localdb هست را چگونه میشود روی هاست‌های اشتراکی استفاده کرد؟ آیا نیاز به تنظیم خاص در کانکشن‌استرینگ دارد؟
            • #
              ‫۱۱ سال و ۱۱ ماه قبل، یکشنبه ۷ آبان ۱۳۹۱، ساعت ۰۰:۱۹
              - یعنی حالت سرور داشته باشد و بتوان به آن مستقیما از راه دور متصل شد. مثل SQL Server کامل.
              - هاست اشتراکی باید این بانک اطلاعاتی را پیشتر نصب کرده باشد.
              مانند SQL Server CE نیست که با توزیع چند DLL مشکل آن برطرف شود و نیازی به نصب نداشته باشد.
              • #
                ‫۱۰ سال و ۶ ماه قبل، یکشنبه ۱۰ فروردین ۱۳۹۳، ساعت ۰۱:۰۷
                امروز هرچقدر سعی می‌کنم یک دیتابیس Sql server ce رو روی هاست اشتراکی منتقل کنم مدام با خطای زیر مواجه می‌شم . راه حل‌های مختلفی رو هم امتحان کردم مثل تغییر سطح تراست یا تغییر نسخه کامپایل به x86 یا x64 یا این و این
                نهایتا به جایی نرسیدم .

                Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8854. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.

                • #
                  ‫۱۰ سال و ۶ ماه قبل، یکشنبه ۱۰ فروردین ۱۳۹۳، ساعت ۰۱:۲۵
                  روی این هاست قبلا یک نسخه‌ی SQL Ce نصب شده. الان شماره درایور دات نت SQL Ce که در برنامه‌ی شما در حال استفاده است، تطابقی با نگارش نصب شده‌ی روی سرور ندارد.
                  بسته کامل آن‌را از نیوگت دریافت کنید. از اینجا
                  علاوه بر ارائه درایور دات نتی، حاوی دو پوشه amd64 و x86 کپی شده در پوشه bin برنامه هم خواهد بود (فایل‌های native اصل بانک اطلاعاتی). همین پوشه‌ها و فایل‌ها را باید به همراه برنامه نیز ارائه کنید.
    • #
      ‫۱۲ سال و ۱ ماه قبل، جمعه ۱۷ شهریور ۱۳۹۱، ساعت ۰۶:۵۲
      واقعاً که عالی بود. ممنون
  • #
    ‫۱۱ سال و ۱۱ ماه قبل، چهارشنبه ۳ آبان ۱۳۹۱، ساعت ۰۰:۴۰
    من با Management Studio ی SQL Server 2008 همین (localdb)\v11.0  رو وارد کردم و متصل شد. مطمئن هستید که فقط با SQL 2012 میشه بهش وصل شد؟
  • #
    ‫۱۱ سال و ۶ ماه قبل، یکشنبه ۱۱ فروردین ۱۳۹۲، ساعت ۱۴:۵۴
    سلام. دیتابیس برنامه من LocalDB هستش و از روش EF Code First هم برای برقراری ارتباط با دیتابیس استفاده میکنم. میخوام فایل‌های مرتبط با دیتابیسم mdf. و ldf. توی فولدر Bin باشه. ولی وقتی از کانکشن استرینگ زیر استفاده میکنم دیتابیس رو توی C:\Users\... قرار میده. در حالی که با SQL Compact چنین مشکلی نداشتم و فایل sdf. رو در فولدر Bin قرار میداد.
    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True;" />
          </parameters>
        </defaultConnectionFactory>
      </entityFramework> 
    <connectionStrings>
        <clear/>
        <add name="MyContext"
             connectionString="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True; AttachDBFilename=MyDatabase.mdf"
             providerName="System.Data.SqlClient"
               />
      </connectionStrings>
    ممنون میشم راهنماییم کنید. 
    • #
      ‫۱۱ سال و ۶ ماه قبل، یکشنبه ۱۱ فروردین ۱۳۹۲، ساعت ۱۵:۰۸
      این یک روش عمومی است و در تمام رشته‌های اتصالی دات نتی کار می‌کند:
      از DataDirectory استفاده کنید. مثلا:

      AttachDBFilename=|DataDirectory|\database.mdf
      مقدار آن در برنامه‌های ASP.NET به صورت خودکار به پوشه استاندارد App_Data مپ می‌شود. برای سایر حالات می‌تونید اون رو در زمان آغاز برنامه دستی مقدار دهی کنید:
      AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
      ضمنا روش مسیردهی کامل هم همیشه کار می‌کند
      AttachDbFilename='Full\Path\To.MDF'
      • #
        ‫۱۱ سال و ۶ ماه قبل، یکشنبه ۱۱ فروردین ۱۳۹۲، ساعت ۱۶:۴۳
        سلام؛ AppDomain چیه ؟
        اینکه میگن توی یک برنامه ممکنه چند AppDomain  داشته باشیم چه معنی میده ؟

        • #
          ‫۱۱ سال و ۶ ماه قبل، یکشنبه ۱۱ فروردین ۱۳۹۲، ساعت ۱۶:۵۷
          AppDomain  روشی است برای ایزوله سازی اطلاعات برنامه‌ها از یکدیگر. به این ترتیب در یک پروسه هم می‌شود چندین برنامه دیگر را به صورت کاملا ایزوله از هم بارگذاری و اجرا کرد.
          • #
            ‫۱۱ سال و ۶ ماه قبل، پنجشنبه ۱۵ فروردین ۱۳۹۲، ساعت ۰۵:۰۰
            اگر از ویندوز XP رو هم پشتیبانی می‌کرد خیلی خوب می‌شد، بدون این گزینه نمی‌شه رفت سراغش مخصوصا برای برنامه‌های شرکتی که باید روی اکثر سیستم عامل‌ها اجرا بشه (و فعلا xp استفاده زیادی داره)
  • #
    ‫۱۰ سال و ۸ ماه قبل، جمعه ۱۸ بهمن ۱۳۹۲، ساعت ۰۴:۳۰
    با تشکر
    من 2 تا مشکلی که در هنگام استفاده از  local db  در ویژوال استدیو 2012 برخورد کردم این بود که
    1-هر از گاهی پیغام کم آوردن خطای حافظه رو میداد (مثلا هنگامی که میخواستم محتویات جداول رو ببینم ) و تقریبا توی اکثر اوقات چاره ای به جز بستن ویژوال استدیو و باز کردن مجدد آن نداشتم
    2-اسکریپت تهیه کردن از جدول و اطلاعات داخل آن واقعا عذاب آوره و هر جدول رو باید جداگانه اسکریپت تبدیل میکردم
    خواستم ببینم راهی برای این مشکل وجود دارد؟
  • #
    ‫۱۰ سال و ۳ ماه قبل، چهارشنبه ۱۱ تیر ۱۳۹۳، ساعت ۱۳:۲۰
    در کد زیر اگر کانکشن استرینگ را کامنت کنم بانک ساخته می‌شود و مشکلی ندارد در غیر این صورت پیغام خطای زیر را می‌دهد:
    A file activation error occurred. The physical file name 'tax.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation.
    
    CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
    فایل app.config :
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
      
      <connectionStrings>
        <clear/>
        <add name="Context"
             connectionString="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True; AttachDBFilename=tax.mdf"
             providerName="System.Data.SqlClient"
               />
      </connectionStrings>
    
    
    
      <entityFramework>
       
         <defaultConnectionFactory  type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters >
            <parameter value="v11.0"/>
          </parameters>
        </defaultConnectionFactory>
      </entityFramework>
      
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup></configuration>

    • #
      ‫۱۰ سال و ۳ ماه قبل، چهارشنبه ۱۱ تیر ۱۳۹۳، ساعت ۱۴:۲۰
      کمی بالاتر در مورد تنظیمات data directory بحث شده.