Archyvas

Įrašo tag'ai: ‘microsoft sql server’

SQL. Deadlock’ai

Darbe susidūriau su tokia problema, kad kartais SQL serveris atjungia kokį procesą prie SQL serverio.

Paskaitęs internete atradau, kad taip atsitinka dėl to, jog SQL serveris aptinka, kad yra negerovė su procesu. Tada iš (tarkim) esančių dviejų procesų atsitiktinai parinktą vieną išjungia (abort) ir kitas gali drąsiai veikti.

Įdomi situacija. Ieškojau sprendimo. Praėjau keletą tinklalapių ir radau sprendimus:

http://www.sql-server-performance.com/tips/deadlocks_p1.aspx “Reducing SQL Server Deadlocks”

http://msdn.microsoft.com/en-us/library/ms188246.aspx “Analyzing Deadlocks with SQL Server Profiler”

http://articles.techrepublic.com.com/5100-10878_11-5181472.html “Control SQL Server locking with hints”

SQL. CASE sakinys

Birželis 30th, 2008 Ernestas Kardzys Nėra komentarų

Kartais gali prireikti SQL’e susieti vieną informaciją su kita. Pvz. skaičius 1-as reiškia “A”, skaičius 2 reiškia “B”, skaičius 3 reiškia “C”. Kaip tai padaryti? Pasinaudoti CASE sakiniu:

 SELECT CASE Skaiciai WHEN 1 THEN ‘A’ WHEN 2 THEN ‘B’ ELSE ‘C’ END AS ‘Skaitinė informacija’ FROM SkaiciuLentele

Geras daiktas ;)

SQL įterpto įrašo ID gavimas

Birželis 9th, 2008 Ernestas Kardzys Vienas komentaras

Jeigu dirbate su MS SQL greičiausiai Jums reikia įterpti įrašą. Taip pat gali prireikti, kad būtų gražintas įterpto įrašo ID.

Paprastas triukas:

INSERT lentelės_vardas
( laukas1, laukas2, laukas3)
VALUES ( @laukas1, @laukas2, @laukas3)
SELECT @@IDENTITY

MSDN’as atsinaujino + šiaip MS produktai

Gegužė 27th, 2008 Ernestas Kardzys Vienas komentaras

Apsilankiau vakar MSDN tinklapiuose. Dizainas tikrai atnaujintas – įgavo tamsesnę raudoną spalvą.

Dar mačiau MS Visual Studio Express 2008. Reikės pabandymui parsipumpuoti, tik kad tai 800MB+ :/ Daugoka…

Truputį apmaudu, kad MS Vista nenori be atnaujinimų įsileisti MS Visual Studio 2005 Express :/ Tad, reikės bandyti grūsti 2008-ų Express versiją :)

Apie duomenų bazių normalines formas

Gegužė 15th, 2008 Ernestas Kardzys Nėra komentarų

Diskutavome vakar apie normalines formas (NF). Tad, jei nepamiršau, išvada tokia:

1 NF bus tada, kai yra primary key ir nėra pasikartojančių stulpelių. Žodžiu, gana paprasta. Kitaip tariant: beveik visada bus 1 NF.

2 NF bus tada, kai tenkins 1 NF taisykles + iš dalies primary key negalima gauti kurio nors vieno įrašo.

3 NF bus tada, kai tenkins 2 NF taisykles + primary key nurodys visas lentelės įrašus. Kitaip tariant: lentelėje nebus tokių įrašų, kurių negalima gauti turinti primary key.

SQL Server 2005 Books Online

Balandis 19th, 2008 Ernestas Kardzys Nėra komentarų

Nuėjau į Microsoft tinklalapius ir parsipumpavau šį daikčiuką. Tiksliau, jo rugsėjo versiją :)

Pastebėjimas: Microsoft’as tikrai moka gaminti gerą dokumentaciją. Daug naudingos ir suprantamos informacijos. Tik vienas pastebėjimas: nuėjus į MSDN tinklapius ir iš ten paleidus paiešką (beje, paieška irgi nieko – gana tiksli) bus lėčiau, negu neėjus į Google ir iš ten ieškant medžiagos MSDN’e. Įdomi ypatybė.

Bet grįžkime prie SQL serverio dokumentacijos. Daiktas tikrai geras, jei dirbate su Microsoft SQL serveriu. Dokumentacija primena man Linux’o man puslapius, tik kad ją reikia parsisiųsti – pas mane internetas silpnas ir ne nuolatinis. Tiesa, kartais galima nuėjus į KTU internetą parsisiųsti reikiamos medžiagos studijoms. Nors tuo stengiuosi nepiktnaudžiauti.

Tad apibendrinant šią žinutę: jei turite Microsoft SQL serverį, parsipumpuokite dokumentaciją. Taškas :)

http://msdn2.microsoft.com/lt-lt/sqlserver/bb895970(en-us).aspx

P.S. Manęs draugas paklausė, kuo skiriasi MS SQL Server Express ir kitos versijos (Enterprise, Standard ir pan.). Nežinojau tuo metu tiksliai, tad paieškojau internete.

http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx

SQL dievams

Kovas 26th, 2008 Ernestas Kardzys 3 komentarai

Kas buvo šiandien Informatikos studijų krypties specializacijų pristatyme – (gal) supras. Apie SQL.

Kieta užklausa: SELECT * FROM šaldytuvas

:D

MS SQL Server 2005 ir C# [papildyta]

Kovas 26th, 2008 Ernestas Kardzys 2 komentarai

Mano senesnėje programoje/žinutėje http://www.ernestas.info/?p=233 vienas mano blogo lankytojas pastebėjo rimtą klaidą. Dirbdamas su MS SQL duomenų baze aš gražinu -1 kaip klaidos pranešimą. Buvo pastebėta, kad tai rimta klaida.

Tikslus pastebėjimas, tad į jį yra mano pasiteisinimai:

  1. Tai antra mano programa ant C#.
  2. Programa nerimta – skirta mokymosi tikslais.
  3. Ir aš iki išimčių apdorojimo (exception-handling) dar nepriskaičiau :D Žinojau, kad galima pagauti išimtį, o kaip ją “aukštyn” permesti – nežinojau. Tad šį tą atradau ir padariau :) Aišku, programa idealiai neveikia :)

Pasirodo, išimtį “aukštyn” permeta throw

Išimties apdorojimas atrodo maždaug taip:

catch (Exception ex) {

ex = new Exception(“Klaida”);

throw;

}

http://www.ernestas.info/projects/csharp/TestinePrograma.zip

MS SQL Server 2005 ir C#

Kovas 24th, 2008 Ernestas Kardzys 4 komentarai

Pasirašiau nesudėtingą programą, kuri veikia kaip konsolė: įvedame MS SQL užklausas, o programa gražina atsakymą – užklausos rezultatą.

Tiesa, atradau keletą klaidų, kurių kol kas dar neištaisiau. Bet tikiuosi pataisyti :)

Pavadintas šis gėris “TestinePrograma”. Kai rašiau – geresnio vardo nesugalvojau, tad tokį ir palikau :)

http://www.ernestas.info/projects/csharp/TestinePrograma.zip

Microsoft SQL Server 2005 (tinka ir Express versijai) konfiguravimas

Kovas 14th, 2008 Ernestas Kardzys 2 komentarai

Sąžiningai: dvi dienas sedėjau vakarais, niekaip negalėjau sukonfiguruoti MS SQL Server 2005 Express. Jis niekaip nenorėjo veikti.

Tiksliau: veikti tai veikė. Bet… Pabandyti prie to “žvėries” prisijungti niekaip nesisekė. Serveris veikti, o prie jo DB pasijungti iš kompiuterio niekaip nesisekė. Žodžiu, tikrai daug knisausi. Galiausiai šiandien atradau, kame čia viskas užslėpta.

Gavau tikrai negražių klaidų:

Error: Microsoft SQL Native Client: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.

arba

An error has occurred while stablishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

Bet galiausiai radau, kame čia problemos.

Pirmiausia, MSSQL  2005 serveris veikė ant 1254 jungties (port), o ne ant 1433.

Toliau ne taip dirbau su serveriu. Reikėjo pasirinkti iš atitinkamų meniu punktu – susieti DB su mano projektu. Žodžiu, didelė ir žiopla klaida. Kita vertus: pirmą kartą ant MS SQL dirbu. Ateičiai žinosiu.

Ir galiausiai: SQL serveris, kaip tvirtina Microsoft, standartiškai šiek tiek kitaip sukonfiguruotas. Tad, teko perkonfiguruoti jį, bet galiausiai viskas gerai.

Naudingos nuorodos:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;914277 -  “How to configure SQL Server 2005 to allow remote connections”. Nutolusių prisijungimų leidimas.

http://msdn2.microsoft.com/en-us/library/sxds9ett.aspx -  “How to: Connect to Data in a SQL Server Express Database”.

http://msdn2.microsoft.com/en-us/library/ms171890.aspx -  “Walkthrough: Connecting to Data in a SQL Server Express Database”. Programavimą nuo šios nuorodos pradėčiau. Labai naudinga.