MOSS 2007 a Office 2010
28 května 10 07:59 dop. | mafalt | 0 Comments   

Onehdá jsem si na notebook instaloval MOSS 2007. Instalace samotná proběhla v pořádku, ovšem konfigurace se stále ne a ne podařit. Pořád ta samá chyba.

One or more types failed to load. Please refer to the upgrade log for more details.

Nakonec jsem příčinu našel - InfoPath 2010. Takže, pokud máte někde nainstalovaný InfoPath 2010 a chcete tam nainstalovat MOSS 2007, tak je nutné nejprve InfoPath odstranit a po úspěšné konfiguraci MOSS opět nainstalovat.

Vedeno pod:
Správce služeb SQL Serveru
26 října 08 12:01 dop. | mafalt | 9 Comments   

Možná, stejně jako já, máte na svém stroji nainstalováno více instancí SQL Serveru. A protože SQL Server má nemalou spotřebu paměti a jeho start při spuštění systému taky nějakou dobu trvá, mám všechny instance nastavené na ruční spouštění. Už mě nebavilo pokaždé spouštět Správce služeb a spouštět SQL Server. Proto jsem si napsal malou aplikaci, která vytáhne všechny služby začínající MSSQL. Kdo máte zájem, můžete si tuto aplikaci stáhnout zde.

image

Vedeno pod:
Objektově orientovaný PowerShell
28 března 08 05:31 odp. | mafalt | 0 Comments   

Pokud by někdo potřeboval objektově orientované skriptování, může se podívat na tento post.

Vedeno pod:
Import dat z Excelových souborů do databáze pomocí SSIS
01 března 08 07:59 odp. | mafalt | 2 Comments   

Zrovna pracuju na jednom projektu, kde musím importovat data z excelových souborů do databáze. Bohužel, některé sloupce obsahují data v různých formátech, nejčastějí číslo a text. A to je ten kámen úrazu. Když už jsem třetí den zjišťoval, proč mi dva řádky chybí v databázi, zjistil jsem, že přímo z Excel Source jdou hodnoty NULL pro zmíněný sloupec. Naštěstí pomohl Google a našel mi tento post.

Myslím, že na tuto lekci dlouho nezapomenu. A pokud ano, tak vim, ze jsem si to napsal, abych nemusel znovu ztrácet 3 dny hledáním důvodu :-)

Vedeno pod:
Jak co nejrychleji zjistit počet řádků v tabulce?
11 července 07 08:49 odp. | mafalt | 12 Comments   

Tak tuhle otázku si určitě všichni pokládáme několikrát za den. A spousta z nás na ni odpovi: "SELECT COUNT(*) ...". Ano, takto lze zjistit počet řádků v tabulce. Ovšem obsahuje-li tabulka nekolik milionů řádků, tak si na výsledek pěkně počkáme.

Existuje rychlejší způsob? Ano, existuje. Informace o počtu řádků je uložena společně s indexem. Není tudíž nic jednodušího, než se zeptat, kolik řádků obhospodařuje clustered index.

Moment, ale co když tabulka clustered index nemá? Nevadí, zeptáme se, kolik řádků je na heapu.

Dobrá, tak teď už víme, na co se chceme ptát, ale nevíme kde a jak. Ale, protože chceme tento způsob používat častěji, tak si rovnou uděláme funkci. Tady je:

	
CREATE FUNCTION dbo.GetRowCount(@tableName sysname)
RETURNS bigint
AS
BEGIN
    DECLARE @_result bigint
      SELECT @_result = rowcnt
    FROM sys.sysindexes
    WHERE id = OBJECT_ID(@tableName) AND
          (indid = 0 OR indid = 1)
    RETURN @_result
END

Tahle funkce vrací počet řádků, které jsou uloženy společně s informací o clusterovaném indexu (indid = 1), případně s informací o heapu (indid = 0).

Nyní už nezbývá, než tuto krásnou funkci využít ve svých projektech. Hlavně nezapomínejte na pravidelnou reindexaci, jinak se může stát, že dostanete nesprávné výsledky.

Vedeno pod:
Zelenobílá pohádka
12 června 07 01:15 dop. | mafalt | 0 Comments   

Jak se říká, nejen prací živ je člověk. Proto se v tomto příspěvku vyhnu programátorským věcem a podělím se o událost, která mě nadmíru potěšila.

V této republice je asi málo jedinců, kteří by nevěděli, co všechno potkalo slavný a tradiční klub Bohemians 1905. Před dvěma roky byla Bohemka na odpis, zadlužená, v konkurzu. Ale její fanoušci ji dokázali zachránit. Dneska všichni fanoušci Bohemky sklízejí plody své lásky ke "klokanovi". Bohemka postupuje do 1. ligy. Po dvou letech, kdy skoro zanikla, se splnil jeden velký sen nejednoho příznivce zelenobílých barev. Podle posledních zpráv, momentálně (píšu to v 1:20) slaví ve Vršovickém Ďolíčku zhruba dvě tisícovky fanoušků společně s hráči. Hodně mě mrzí, že u toho nemůžu být, ale určitě si tuto oslavu vynahradím :-D

 

Vedeno pod:
Změny v Maintenance plánu po instalaci SP2 na SQL 2005
28 února 07 11:30 dop. | mafalt | 0 Comments   

Pokud ve svých maintenancech plánech používáte History CleanUp tasks a Maintenance CleanUp tasks, meli byste si precist tento , kde jsou popsany zmeny, ktere post prisly se Service Pack 2.

Vedeno pod:
Uvolněn SP2 pro SQL Server 2005
20 února 07 11:44 dop. | mafalt | 1 Comments   

Včera večer byl uvolněn Service Pack 2 pro SQL Server 2005. Ke stažení zde.

 

Vedeno pod:
Čím nás mohou překvapit collations? II.
31 října 06 11:21 dop. | mafalt | 7 Comments   

Minule jsme si ukázali, kde nás mohou collations zradit, když se spoléháme na nastavení Case Insensitive. Dneska se podíváme, kde nás mohou zradit collations Czech_CI_AI a Slovak_CI_AI.

Vytvořme si testovací databázi, na které si tuto zradu ukážeme:


CREATE DATABASE Collations2 COLLATE Czech_CI_AI

GO

USE Collations2

GO

CREATE TABLE Test

(

       ID int NOT NULL IDENTITY(1, 1) PRIMARY KEY,

       Data nvarchar(50) NOT NULL

)

GO

INSERT INTO Test VALUES (N'Miloš')

INSERTINTO Test VALUES (N'Šárka')

INSERT INTO Test VALUES (N'sirka')

INSERT INTO Test VALUES (N'šířka')

INSERT INTO Test VALUES (N'macek')

INSERT INTO Test VALUES (N'mačkat')

INSERT INTO Test VALUES (N'možné')

INSERT INTO Test VALUES (N'mrznoucí')

GO

Databázi jsme si rovnou naplnili i testovacími daty a nyní si necháme vypsat všechny záznamy, které obsahují písmeno ‘s’.

SELECT * FROM Test WHERE Data LIKE '%s%'

Tento dotaz vrátí pouze řádek obsahující text ‘sirka’. Proč, když máme nastaveno accent-insensitive? Leckoho možná napadne, že se jedná o bug, ale není tomu tak. Pro SQL Server jsou ‘c’ a ‘č’ dvě naprosto rozdílná písmena, kde háček nemá žádnou diakritickou váhu. Totéž se týká a i zbývajících písmen z naší ukázky.

Příšte opustíme české a slovenské collations a podíváme se na zradu, která nás čeká při používání tureckých collation.

Vedeno pod:
Čím nás mohou překvapit collations? I.
25 října 06 09:35 odp. | mafalt | 7 Comments   

Mnozí z Vás jistě nastavují collation u databází. Jaká jsou úskalí používání collation? Dneska si povíme o prvním "špeku" při používání collation Czech_CI_AS.

Pro naši ukázku si nejprve vytvoříme databázi:

CREATE DATABASE CollationTest COLLATE Czech_CI_AS

V této databázi vytvoříme tabulku, kterou pojmenujeme např. Dochazka.

CREATE TABLE dbo.Dochazka
(
    ZamestnanecID int NOT NULL,
    OdpracHod int NOT NULL
)

Někteří z Vás už možná vidí zradu, která se v tomto návrhu skrývá. Ale pojďme dál.

Nyní uděláme jednoduchý select do této tabulky a, protože máme v collation case insensitive, tak se nebudeme zabývat velikostí písmen:

SELECT zamestnanecid,
       odprachod
FROM dbo.Dochazka

Jakmile tento dotaz spustíme, SQL Server ohlásí chybu:

Msg 207, Level 16, State 1, Line 2
Invalid column name 'odprachod'.

Proč nám SQL Server říká, že sloupec odprachod neexistuje, když v kódu pro vytvoření tabulky je jasně vidět, že existuje?

Vysvětlení hledejme v collation databáze. Nastavením collation databáze na Czech_CI_AS SQL Serveru říkáme, že má při práci s databázovými objekty používat českou abecedu, a to včetně systémových tabulek jako např. sysobjects nebo syscolumns. Česká (a slovenská) abeceda je specifická v tom, že písmena "c" a "h" tvoří písmeno "ch", ale pouze v těchto tvarech: CH, Ch, ch. Spojeni cH vyhodnotí SQL Server jako dvě samostatná písmena ("c" a "H") a proto v tomto případě nenalezne sloupec odprachod, byť tento sloupec v tabulce existuje.

Řešením je psát názvy sloupců tak, jak byly zapsány při vytvoření tabulky, nebo, ještě lépe, oddělovat jednotlivá slova v názvu sloupce podtržítkem, např. odprac_hod.

Dalším řešením je nastavit collation databáze na SQL_Latin1_General_Cp1250_CI_AS a případné (n)varcharové sloupce mít nastaveny na collation Czech_CI_AS.

To by bylo pro dnešek všechno. Příště se podíváme na další zradu při práci s collation a zůstaneme ještě v českých (a slovenských) vodách.

 

Vedeno pod:
Hi, blog
25 října 06 09:59 dop. | mafalt | 2 Comments   

Tak už i mě dostihla blogovací mánie. A o čem, že tady budu psát? O tom, co mě překvapilo při práci s MS SQL a Analysis Services. Leckdy se jednalo o pěkné špeky, jejichž hledáním jsem strávil spousty hodin a tím, že o nich napíšu, se jich vyvaruji nejen já, ale i ostatní. Večer přijde na řadu první špek. Tak se těšte.

 

Vyvojar.cz na prodej!