Podpora MS SQL 2000, MSDE 2000, SQL Server 2005 Express a MS SQL 2008 Express edition

Od verzie 6, release A040419730, systém D2000 podporuje uloženie konfiguračnej databázy a archívu nielen v databáze Sybase SQL Anywhere ale aj v MS SQL 2000 (Microsoft SQL Server 2000) a MSDE 2000 (Microsoft SQL Server 2000 Desktop Engine). MSDE je orezaná a upravená verzia runtime MS SQL servera s limitovaným výkonom, ktorá je použiteľná bez licenčných poplatkov. Nahrádza takisto voľne prístupný runtime Microsoft Access.

Výkonnostné obmedzenia MSDE sú popísané na URL adresách http://www.microsoft.com/sql/msde/productinfo/features.asp a http://msdn.microsoft.com/library/?url=/library/en-us/architec/8_ar_sa2_0ciq.asp?frame=true. Ďalšie dôležité obmedzenie je maximálna veľkosť databázy 2 GB, čo je dôležité pri návrhu archívu. Pre MS SQL 2000 toto obmedzenie neplatí.

Poznámka: Vo februári 2006 bola testovaná databáza SQL Server 2005 Express edition a v auguste 2010 MS SQL Server 2008 Express edition, ktoré sú nástupcom MSDE. Na rozdiel od MSDE majú obmedzenú veľkosť databázy na 4 GB, spotrebu pamäte na max. 1GB a používajú iba jeden procesor. Ďalšie obmedzenia sú popísané na stránke http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx. Na rozdiel od MSDE zrejme nemá workload governor (umelé obmedzenie výkonu pri viacerých prihlásených užívateľoch). Porovnanie MSDE a SQL Server 2008 Express edition je na stránke http://msdn2.microsoft.com/ms165672.aspx.

Poznámka: V auguste 2010 boli podporené databázy SQL Server 2008, SQL Server 2008 R2 ako aj voľne použiteľné edície SQL Server 2008 Express a SQL Server 2008 R2 Express.
SQL Server 2008 Express má obmedzenú veľkosť databázy na 4 GB, spotrebu pamäte na max. 1GB a používa iba jeden procesor. Ďalšie obmedzenia a vlastnosti sú popísané na stránke http://www.microsoft.com/sqlserver/2008/en/us/express.aspx.
SQL Server 2008 R2 Express má obmedzenú veľkosť databázy na 10 GB, spotrebu pamäte na max. 1GB a používa iba jeden procesor. Ďalšie obmedzenia a vlastnosti sú popísané na stránke http://www.microsoft.com/express/Database.

Inštalácia MSDE 2000


MSDE 2000 je možné nainštalovať z inštalačného DVD D2000 (adresár MSDE) alebo získať z webu www.microsoft.com. Inštalácia je neinteraktívna a je potrebné spustiť program setup.exe s nasledujúcimi parametrami:

SAPWD="lubovolne_heslo" Heslo užívateľa s menom "sa" (administrátor). Ak zadáte iné heslo ako SystemD2000, pri vytváraní aplikácie alebo pridávaní archívu v aplikácii D2SMC budete musieť toto heslo zadať.
INSTANCENAME="nazov_instancie" Názov inštancie MSDE. Na jednom počítači môže byť max. 16 inštancií. Ak je názov inštancie napr. D2000, bude po nainštalovaní inštancia viditeľná v D2SMC ako MSDE$D2000.
TARGETDIR="cesta_na disku" Adresár, do ktorého sa MSDE inštaluje (treba zadať koncové lomítko). V tomto adresári sa vytvorí podadresár MSSQL$nazov_instancie, napr. MSSQL$D2000.
SECURITYMODE=SQL Užívatelia sú overovaní v MSSQL.

Príklad štandardnej inštalácie MSDE 2000:
setup SAPWD="SystemD2000" INSTANCENAME="D2000" TARGETDIR="C:\Program Files\" SECURITYMODE=SQL

Vytváranie aplikácií v D2000 Management Console


Proces D2000 Management Console neumožňuje pre MSDE (na rozdiel od Sybase) vytvárať nové engines, pretože tieto sa vytvárajú inštaláciou MSDE.

Pri vytvorení novej aplikácie je treba v dialógovom okne pre parameter DB Driver vybrať položku SQL Server. Následne je možné zvoliť si engine. MSDE engines majú názov MSDE$nazov_instancie, napr. MSDE$D2000. MS SQL 2000 má názov MSSQLSERVER.

Pri vytvorení aplikácie s použitím MSDE alebo MS SQL sa deje nasledovné:

  • D2SMC sa pripojí k SQL serveru do databázy master. Ak heslo administrátora (sa) nie je SystemD2000, objaví sa prihlasovacie okno a užívateľ musí zadať heslo administrátora, prípadne meno a heslo iného užívateľa, ktorý môže pripájať databázu.
  • Databázy (konfiguračné, monitorovacia a archivačná) sa nakopírujú z adresára Templates\MSDE do adresára aplikácie.
  • Databázy sa zaregistrujú na serveri pomocou uloženej procedúry sp_attach.
  • Ak neexistuje užívateľ dba, vytvorí sa a dostane práva prístupu do všetkých troch databáz.
  • Vlastníctvo všetkých užívateľských tabuliek v konfiguračnej, monitorovacej a archivačnej databáze je zmenené z užívateľa install na užívateľa dba.

Po vytvorení aplikácie (alebo archívneho procesu) s použitím MSDE alebo MS SQL nie je možné cez D2SMC zmeniť použitý engine. V prípade potreby je to možné ručne (zmeny príslušného DSN, odpojenie databázy, pripojenie k inému engine, vytvorenie užívateľa dba, zmena vlastníctva atď, viď ďalší text).

Kopírovanie aplikácie


Na rozdiel od Sybase SQL Anywhere nie je možné iba prekopírovať databázové súbory (napr. SysCfg.mdf a SysCfg.ldf) pri kopírovaní aplikácie z jedného počítača (alebo engine) na druhý.

Problém je s definíciou užívateľov: užívateľ v databáze (user name) dba , ktorému patria všetky tabuľky, je identifikovaný v MSDE engine cez prihlasovacie meno (login) dba. Toto priradenie nie je na základe textového názvu užívateľa, ale na základe unikátneho ID (UID). Takže po prekopírovaní a pripojení databázy je v nej síce užívateľ dba, ale nie je použiteľný, pretože k nemu neexistuje v MSDE engine login s potrebným UID, pretože aj keď sa vytvorí login dba, jeho UID bude iné. Riešením je vymazať užívateľa dba (predtým ale treba všetky jeho tabuľky previesť na iného užívateľa), vytvoriť ho v kopírovanej databáze nanovo a urobiť ho vlastníkom tabuliek.

Pred kopírovaním databázových súborov je nutné buď zastaviť engine, ktorý ich používa, alebo dočasne odpojiť databázu pomocou sp_dboption

Príklad kopírovania konfiguračnej databázy aplikácie Test s použitím nástroja osql.exe (textovo orientovaný nástroj na správu databázy MS SQL):

  • Pripojenie sa k databázovému engine D2000 do databázy master na aktuálnom počítači s názvom MyComp:
    osql -S MyComp\D2000 -U sa -P SystemD2000

  • Pripojenie nakopírovanej databázy:
    sp_attach_db 'Test.SysCfg', 'c:\D2000\D2000.V60\Test\SysCfg\SysCfg.mdf','c:\D2000\D2000.V60\Test\SysCfg\SysCfg.ldf'
    go
  • Vytvorenie loginu dba a nastavenie práv v engine (práva sú potrebné pri backupe archívnej databázy):
    sp_addlogin 'dba','swx'
    EXEC sp_addsrvrolemember 'dba','dbcreator'
    EXEC sp_addsrvrolemember 'dba','diskadmin'
    go
  • Prechod do databázy Test.Syscfg:
    use [Test.Syscfg]
    go
  • Zmena vlastníctva tabuliek na užívateľa install (varovania môžu byť ignorované):
    EXEC sp_changeownerD2000 'install'
    go
  • Zmazanie užívateľa dba:
    sp_revokedbaccess 'dba'
    go
  • Vytvorenie užívateľa dba a nastavenie práv v databáze:
    sp_grantdbaccess 'dba','dba'
    go
    sp_addrolemember 'db_owner','dba'
    go
  • Zmena vlastníctva tabuliek na užívateľa dba (varovania môžu byť ignorované):
    sp_changeownerD2000 'dba'
    go

Archív


Archív pracujúci s MSDE 2000 alebo MS SQL 2000 nepodporuje prácu s trezormi a reorganizáciu archívu.

Backup archívnej databázy je možné vykonať dvoma spôsobmi (generovanie .dat súboru alebo kopírovanie .mdf a .ldf súboru pri dočasne odpojenej archívnej databáze), bližšie viď popis štartovacieho parametra pre archív /RS v sekcii Štartovacie parametre procesov.*

Keďže MSDE 2000 podporuje maximálnu možnú veľkosť databázy 2 GB, po dosiahnutí tejto veľkosti sa archív vypíše oznámenie o tom, že archívna databáza je plná a ukončí sa.


* Poznámka: Ak pri backupe už súbor .dat existuje, MSSQL pripojí nový backup na jeho koniec, preto je väčšinou nutné pred backupom starý .dat súbor presunúť, premenovať alebo vymazať, aby neprimerane nerástol a nespotreboval voľné miesto na disku.


Poznámka ku sieťovej konektivite MSDE

Nasledujúca informácia nie je zaručená a použitie je na vlastné riziko!!!
Po nainštalovaní je MSDE dostupné iba lokálne, nie cez sieť. Toto je možné zmeniť nasledovne:

  1. Cez SQL Server Enterprise Manager (súčasť inštalácie MS SQL 2000):
    Po pripojení sa na databázový server (engine) kliknúť naň pravým tlačidlom, v popup menu zvoliť Properties. Na záložke General kliknúť na Network Configuration a povoliť protokoly Named pipes, TCP/IP a prípadne aj iné.
  2. Cez Regedit:
    Do položky ProtocolList (typu Multi-string) treba zadať text np tcp.
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\nazov_instancie\MSSQLServer\SuperSocketNetLib]
    "ProtocolList"=hex(7):6e,00,70,00,00,00,74,00,63,00,70,00,00,00,00,00


    Do položky TcpPort (typu String) treba dať text 1433 (prípadne iné číslo portu, na ktorom má komunikovať engine).
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\nazov_instancie\MSSQLServer\SuperSocketNetLib\Tcp]
    "TcpPort"="1433"

Zmena parametrov engine sa prejaví po jeho reštarte (stačí reštartovať servis MSSQL$nazov_instancie).


Poznámka k použitiu pamäte MSDE a MS SQL

Použitie operačnej pamäte MSDE a MS SQL Serverom je popísané v článku, ktorý sa nachádza na URL adrese: http://support.microsoft.com/default.aspx?scid=kb;en-us;321363. Štandardné fungovanie môže spôsobiť spotrebu pamäte až do 2 GB. Maximálnu spotrebu pamäte je možné obmedziť nasledovne:

  • Pomocou SQL Server Enterprise Manager (je súčasťou inštalácie MS SQL 2000):
    Po pripojení sa na databázový server (engine) stlačte pravé tlačidlo myši, v otvorenom popup menu vyberte položku Properties. V záložke Memory nastavte minimálne a maximálne použitie pamäte.
  • Prostredníctvom textovo orientovaného nástroja OSQL:
    Po pripojení sa na databázový server zadajte nasledovné:
    USE master
    go
    EXEC sp_configure 'show advanced option', '1'
    go
    RECONFIGURE WITH OVERRIDE
    go
    EXEC sp_configure 'max server memory', '32'
    max. veľkosť pamäte v megabajtoch, v príklade - 32MB
    go
    EXEC sp_configure 'min server memory', '8'
    min. veľkosť pamäte v megabajtoch, v príklade - 8MB
    go
    RECONFIGURE WITH OVERRIDE
    go

Veľkosť alokovanej pamäte má vplyv na rýchlosť odozvy databázy, rovnako ako aj na swapovanie. Optimalizácia swapovania závisí od požiadaviek príslušnej aplikácie.

Napíšte komentár