Czym jest instancja SQL Server?

Na samym początku mojej przygody z SQL Server dość trudno było mi zrozumieć termin „instancja”. Teraz wydaje mi się to trywialne, ale jeśli ktoś zastanawia się nad sensem tego terminu, to warto przeczytać ten wpis.

W książkach z SQL Server można odnaleźć próbę tłumaczenia słowa „instancja” jako „egzemplarz systemu”. Szczerze mówiąc sformułowanie to na początku bardzo mnie bolało w oczy, jednak z drugiej strony dość dobrze oddaje istotę pojęcia instancji. Odnaleziona przeze mnie definicja na www.sqlpedia.pl brzmi następująco:

Instalacja kompletnego środowiska SQL Server na maszynie fizycznej lub wirtualnej to INSTANCJA. W jej ramach, możemy zarządzać wieloma bazami danych.

Źródło: http://www.sqlpedia.pl/srodowisko-ms-sql-server/

Powstają zatem pytania:

  1. Czy na jednej maszynie może być zainstalowana tylko 1 instancja SQL Server?
    Na jednej maszynie może być zainstalowanych wiele instancji SQL Server.
  2. Czy na jednej maszynie może być uruchomiona tylko 1 instancja SQL Server?
    Można zainstalować wiele instancji SQL Server na jednej maszynie. Nie jest to jednak zalecane z uwagi na fakt, że różne instancje SQL Server będą ze sobą konkurować o zasoby. Może to być bardzo niekorzystne wydajnościowo.
  3. Jaka jest maksymalna liczba zainstalowanych instancji SQL Server?
    Na technecie można odnaleźć informację, że maksymalna liczba instancji SQL Server na jednej maszynie to 50 (25 w przypadku failover cluster) – niezależnie od edycji. W SQL Server 2016 ten limit został utrzymany (msdn).
  4. Jakie istnieją rodzaje instancji?
    Istnieją dwa rodzaje instancji SQL Server: domyślna i nazwana. Na danej maszynie może być zainstalowana tylko jedna domyślna instancja SQL Server.
  5. Co to jest instancja domyślna?
    Dzięki niej można połączyć się z SQL Server podając tylko nazwę maszyny.
  6. Co to jest instancja nazwana?
    Jest to niedomyślna instancja SQL Server. W celu połączenia z taką instancją należy podać nazwę maszyny w sieci oraz nazwę instancji.
  7. Jaką nazwę nosi instancja SQL Server Express?
    Nazwa ta to: SQLExpress.
  8. Jaką nazwę nosi domyślna instancja SQL Server?
    Domyślna instancja nosi nazwę MSSQLServer.
  9. Jakie są zarezerwowane słowa kluczowe, których nie można użyć w celu nazwania instancji?
    Są to: Default oraz MSSQLServer.
  10. Skąd pobrać listę zainstalowanych instancji SQL Server?
    W tym celu warto skorzystać z narzędzia SQL Server Configuration Manager. Można także wykorzystać poniższe zapytanie odczytujące wartości zapisane w rejestrze systemu Windows:

Źródła:

6 Comments Add yours

  1. Gość napisał(a):

    To tłumaczenie ogólno-książkowe, że instancja jest to egzemplarz systemu, jest niezrozumiałe. Egzemplarz systemu to może być pudełko z Windows 10, leżące na półce sklepu z artykułami komputerowymi. Natomiast D.Mendrala i M.Szeliga w swojej książce pt. „SQL Praktyczny kurs” piszą o ewentualnej instalacji dodatkowej instancji SQL Servera, czyli też wskazują że instancja jest równoważna fizycznej „instalce”. Myślę że to co napisał J.Kasprzak na stronie SQLpedia, jest najlepszym wytłumaczeniem. Drobne uzupełnienie do powyższego wpisu, w przypadku darmowej wersji SQL Servera, jego domyślna instancja nosi nazwę SQLEXPRESS.

    1. piotrziuzianski napisał(a):

      Wydaje mi się, że SQLEXPRESS to domyślna nazwa instalowanej instancji darmowego SQL Server. Nie jest to jednak instancja domyślna, tylko instancja nazwana z taką właśnie nazwą 🙂

      1. Gość napisał(a):

        Dzięki za uwagę. A ja utożsamiałem domyślnie nazwaną instancję, tą SQLEXPRESS, z instancją domyślną. Czyli źle myślałem. Czyli o ile dobrze rozumiem, wariant z nazwaniem instancji SQLEXPRESS zostawia nam „furtką”, gdybyśmy w przyszłości chcieli doinstalować wersję główną, tą domyślną z nazwą MSSQLSERVER.

        1. piotrziuzianski napisał(a):

          Tak na prawdę rola domyślnej instancji sprowadza się jedynie do tego, że przy połączeniu z daną maszyną, nie trzeba podawać nazwy instancji SQL Server. Jest to dobrze opisane w tym miejscu: https://msdn.microsoft.com/pl-pl/library/baza-danych-sql-server–rodzaje-sql-server-zastosowanie-instalacja-i-konfiguracja-w-podstawowym-zakresie.aspx – „Instancja domyślna jest identyfikowana w sieci jako nazwa komputera, na którym została zainstalowana (dla serwisu SQL Server zostanie utworzony alias MSSQLSERVER). Na pojedynczej maszynie może być skonfigurowana tylko jedna instancja domyślna.” Instancję SQL Server Express można zainstalować jako domyślną, gdy nada jej się nazwę MSSQLSERVER. Można o tym przeczytać tutaj: http://stackoverflow.com/questions/3586196/default-instance-name-of-sql-server-express – „When installing SQL Express, you’ll usually get a named instance called SQLExpress, which as others have said you can connect to with localhost\SQLExpress. If you’re looking to get a ‚default’ instance, which doesn’t have a name, you can do that as well. If you put MSSQLServer as the name when installing, it will create a default instance which you can connect to by just specifying ‚localhost’.”
          Okazuje się zatem, że prosty temat może być skomplikowany 😉

          1. piotrziuzianski napisał(a):

            Rozszerzyłem nieco listę pytań w tym wpisie i dodałem do nich odpowiedzi 🙂

          2. Gość napisał(a):

            „Okazuje się zatem, że prosty temat może być skomplikowany” – no, nie jest aż taki prosty, skoro poruszano go też na Stackoverflow. Poza tym, to co wydaje się proste, nie musi nim być w rzeczywistości. Nawet niby proste zapytanie „SELECT * FROM tabela” nie jest takie proste, bo np. przy zastosowaniu gwiazdki zaraz pojawi się sprawa indeksów, czego na pierwszy rzut oka nie widać.
            Dlatego dobrze że to wszystko opisałeś, bo teraz sprawa się wyjaśniła. Poza tym zarządzanie instancjami należy do zagadnień administracyjnych, a te w typowych podręcznikach do nauki SQL-a są pomijane, więc tym bardziej dobrze że je tu opisujesz.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *