Microsoft SQL Server’da Instance Kavramı
  1. Anasayfa
  2. Microsoft SQL Server

Microsoft SQL Server’da Instance Kavramı

SQL Server, SQL Server Database Engine’in birden çok kopyasını kurmaya izin verir. Bu Database Engine’lar yan yana çalışır ve birbirinden tamamen izole edilmiştir. Bir işletim sistemi üzerine her bir Database Engine kurulumu Instance olarak tanımlanır. Her bir Instance kendi server dosyasını, veritabanı motorunu (database engine) veritabanları, kullanıcı ve kimlik bilgileriyle eksiksiz bir SQL Server kurulumudur.

Bazen bir SQL Server bileşeninin birden fazla kopyasını tek bir sunucuya yüklemek için avantajlı olabilir. Bu yöntem ile birden çok SQL Server bileşeni, ayrı Instance olarak birden fazla kez kurulabilir. Aynı donanım yada işletim sistemi üzerinde birden çok SQL Server çalıştırıldığı için, birden çok Instance çalıştırmanın kaynak tüketimi ve ihtiyacı fazla olacaktır.

Tek bir sunucu üzerine birden fazla SQL Server rolleri yükleyebilirsiniz. Yüklü olan SQL Server’ların her biri “Instance” olarak isimlendirilir. Sunucu üzerinde çok sayıda yüklü olan Instance’lardan sadece bir tanesi varsayılan olarak makine ismi ile bütünleştirebilirsiniz. Diğer Instance’ları birbirinden farklı isimler vererek kurmak ve yapılandırmak zorundasınız.

SQL Server bileşenlerinin birden çok Instance tek bir sunucuya yükleme yeteneği, birkaç durumda yararlı olacaktır;

  • Veritabanı kümeleri için farklı yöneticilere veya güvenlik ortamlarına sahip olmak isteyebilirsiniz. Bu yöntem ile SQL Server’ın her bir Instance ayrı ayrı yönetebilir ve güvenliğini sağlayabilirsiniz.
  • Bazı uygulamalarınız diğer uygulamaların sunucu gereksinimleriyle tutarsız veya uyumsuz sunucu yapılandırmalarına maruz kalabilir. Böyleyece SQL Server’ın her Instance’ını bağımsız olarak yapılandırabilirsiniz.
  • Uygulama veritabanlarınız, özellikle kullanılabilirlik açısından farklı hizmet düzeylerine ihtiyaç duyabilir. Farklı hizmet düzeyi anlaşmaları (SLA’lar) ile iş yüklerini ayırmak için SQL Server Instance kullanabilirsiniz.
  • Instance kullnımı ile SQL Server’ın farklı sürümlerini tek bir işletim sisteminde barındırabilirsiniz.
  • Uygulamalarınız farklı sunucu düzeyinde dil ayarı ve dil yapılandırmasını (collation) ihtiyaç duyabilir. Instance kullanımı ile her veritabanı farklı collation sahip olabilse de, uygulama geçici nesneler kullanırken tempdb veritabanının collation bağımlı olabilir.
  • Bir Instance adı belirtmeden iletilen sorgular gönderilirse, bağlantı istekleri varsayılan Instance’a bağlanır.
  • SQL Server’ın farklı sürümleri, birden çok Instance kullanılarak ayni işletim sistemi üzerinde yan yana da kurulabilir. Bu durum yükseltme senaryolarını test ederken veya yükseltmeler gerçekleştirirken kolaylıklar sunacaktır.
  • Instance kullanımının sunduğu avantajlardan biride; SQL Server araçlarını ve yardımcı programlarını bir sunucuya birden fazla yüklemeye gerek yoktur. Tüm Instance’ların yönetimi ve yapılandırılması için araçlardan tek birini kurarak bu yöntemle kullanabilirsiniz.

Default Instance ve Named Instance Kavramları

SQL Server 2000’den önce, bir sunucu sistemine yalnızca tek bir SQL Server kurulabilirdi. SQL Server’ın barındırıldığı Windows sunucusunun adıyla adreslenmiştir. Geriye dönük uyumluluğu korumak için bu bağlantı modu hala desteklenmektedir ve buna default Instance denir. Varsayılan ayarlarda kurulan SQL Server’da bu MSSQLSERVER olarak geçmektedir. Bu instance isimlendirilemez ve alias veremezsiniz.

SQL Server’ın ek Instance ile kullanımı sunucu adıyla birlikte kullanabileceğiniz Named Instance olarak bilinen bir Instance adı gerektirir. SQL Server’ın tüm bileşenlerini birden fazla Instance kuramazsınız. Named Instance için, istemci uygulamaları Server-Name\InstanceNAME adresini kullanır. Örneğin, VKK-SQL01 adlı bir Windows sunucusunda INS01 adlı named Instance kurulursa,VKK-SQL01\ISN01 olarak adreslenecektir.

SQL Server Instance İsimlendirme Kuralları

  • Instance adları büyük/küçük harfe duyarlı değildir.
  • Instance adları alt çizgi _ ile başlayamaz ve bitemez.
  • MSSQLSERVER adı default instance olarak reservelidir. Bu isimi tekrardan veremezseniz.
  • 16 karakterden fazla olamaz.
  • Named Instace isimlendirilmesinde ilk karekter bir harf olmalıdır. a-z, A-Z sonraki karekterler ondalık sayılar, dolar işareti ($) veya alt çizgi (_) olabilir.  
  • Boşluk, ters eğik çizgi (), virgül (,), iki nokta üst üste (:), noktalı virgül (;), tek tırnak (‘), ve işareti (&), kısa çizgi (-) ve (@) vb. kullanmayınız.
  • Instance adında Ayrılmış Anahtar Kelimelere izin verilmez. İşte Ayrılmış Anahtar Kelimelerin listesi;
    • DD
    • EXTERNAL
    • PROCEDURE
    • ALL
    • FETCH
    • PUBLIC
    • ALTER
    • FILE
    • RAISERROR
    • AND
    • FILLFACTOR
    • READ
    • ANY
    • FOR
    • READTEXT
    • AS
    • FOREIGN
    • RECONFIGURE
    • ASC
    • FREETEXT
    • REFERENCES
    • AUTHORIZATION
    • FREETEXTTABLE
    • REPLICATION
    • BACKUP
    • FROM
    • RESTORE
    • BEGIN
    • FULL
    • RESTRICT
    • BETWEEN
    • FUNCTION
    • RETURN
    • BREAK
    • GOTO
    • REVERT
    • BROWSE
    • GRANT
    • REVOKE
    • BULK
    • GROUP
    • RIGHT
    • BY
    • HAVING
    • ROLLBACK
    • CASCADE
    • HOLDLOCK
    • ROWCOUNT
    • CASE
    • IDENTITY
    • ROWGUIDCOL
    • CHECK
    • IDENTITY_INSERT
    • RULE
    • CHECKPOINT
    • IDENTITYCOL
    • SAVE
    • CLOSE
    • IF
    • SCHEMA
    • CLUSTERED
    • IN
    • SECURITYAUDIT
    • COALESCE
    • INDEX
    • SELECT
    • COLLATE
    • INNER
    • SEMANTICKEYPHRASETABLE
    • COLUMN
    • INSERT
    • SEMANTICSIMILARITYDETAILSTABLE
    • COMMIT
    • INTERSECT
    • SEMANTICSIMILARITYTABLE
    • COMPUTE
    • INTO
    • SESSION_USER
    • CONSTRAINT
    • IS
    • SET
    • CONTAINS
    • JOIN
    • SETUSER
    • CONTAINSTABLE
    • KEY
    • SHUTDOWN
    • CONTINUE
    • KILL
    • SOME
    • CONVERT
    • LEFT
    • STATISTICS
    • CREATE
    • LIKE
    • SYSTEM_USER
    • CROSS
    • LINENO
    • TABLE
    • CURRENT
    • LOAD
    • TABLESAMPLE
    • CURRENT_DATE
    • MERGE
    • TEXTSIZE
    • CURRENT_TIME
    • NATIONAL
    • THEN
    • CURRENT_TIMESTAMP
    • NOCHECK
    • TO
    • CURRENT_USER
    • NONCLUSTERED
    • TOP
    • CURSOR
    • NOT
    • TRAN
    • DATABASE
    • NULL
    • TRANSACTION
    • DBCC
    • NULLIF
    • TRIGGER
    • DEALLOCATE
    • OF
    • TRUNCATE
    • DECLARE
    • OFF
    • TRY_CONVERT
    • DEFAULT
    • OFFSETS
    • TSEQUAL
    • DELETE
    • ON
    • UNION
    • DENY
    • OPEN
    • UNIQUE
    • DESC
    • OPENDATASOURCE
    • UNPIVOT
    • DISK
    • OPENQUERY
    • UPDATE
    • DISTINCT
    • OPENROWSET
    • UPDATETEXT
    • DISTRIBUTED
    • OPENXML
    • USE
    • DOUBLE
    • OPTION
    • USER
    • DROP
    • OR
    • VALUES
    • DUMP
    • ORDER
    • VARYING
    • ELSE
    • OUTER
    • VIEW
    • END
    • OVER
    • WAITFOR
    • ERRLVL
    • PERCENT
    • WHEN
    • ESCAPE
    • PIVOT
    • WHERE
    • EXCEPT
    • PLAN
    • WHILE
    • EXEC
    • PRECISION
    • WITH
    • EXECUTE
    • PRIMARY
    • WITHIN GROUP
    • EXISTS
    • PRINT
    • WRITETEXT
    • EXIT
    • PROC