vrijdag 25 september 2009

Moet het altijd over SQL gaan? (Windows 7 show desktop Icon)

Afgelopen weekend heb ik Vista vervangen door Windows 7 op mijn laptop. De laptop is verder ingericht met 3 versies van SQL namelijk 2000/2005/2008.

Mijn laptop is geen 64 bits en bevat maar 4 GB aan geheugen. Dus om alle services altijd actief te hebben is niet echt goed voor de performance. Daarom dus een berg icoontjes op mijn desktop voor het stoppen en starten van de SQL Services:



Dus mijn eerste vraag is waar is mijn show desktop icon!!!!, je kan hem niet meer aanzetten in de taskbar properties, daar zag ik echter wel iets over een desktop preview... dus er moet iets zijn maar waar is dat ding gebleven?


Zoeken dus en na een tijdje is hij te vinden waar, kijk zelf maar:

dinsdag 15 september 2009

Datum formaat in Microsoft T-SQL

Binnen mijn werk waar ik regelmatig moet samenwerken met Oracle specialisten krijg ik vaak opmerkingen over de datum functies van MS T_SQL.

"Ze zijn niet handig, lastig in gebruik, waarom kan ik niet gewoon net als in oracle gebruikmaken van bv: to_date('01-JAN-2002'),'YYYYMMDD') maar moet ik getal codes gebruiken?"

CONVERT(VARCHAR(8),GETDATE(),112) = yyyymmdd (ISO) of CONVERT(VARCHAR(10),GETDATE(),103) = dd/mm/yyyy (ISO)

Naar mijn mening het is niet moeilijker maar anders en je moet er aan wennen.

Kan je echter niet wennen aan de CONVERT functie van MS T-SQL dan zijn er nog voldoende andere mogelijkheden die voldoende flexibiliteit bieden.
Voor een overzicht kijk je een keer op: http://msdn.microsoft.com/en-us/library/ms186724.aspx

DATEPART is de meest flexibele functie die je kan gebruiken om ieder formaat aan je datum te geven. Ok, het is niet zo eenvoudig als to_date, maar dat is voor 99% wennen.

SELECT
CAST(DATEPART(yyyy,GETDATE()) AS VARCHAR(4)) AS 'Jaar'
, CAST(DATEPART(mm,GETDATE()) AS VARCHAR(2)) AS 'Maand'
, CAST(DATEPART(dd,GETDATE()) AS VARCHAR(2)) AS 'Dag'
, CAST(DATEPART(yyyy,GETDATE()) AS VARCHAR(4)) +
RIGHT('0'+CAST(DATEPART(mm,GETDATE()) AS VARCHAR(2)),2) +
RIGHT('0'+CAST(DATEPART(dd,GETDATE()) AS VARCHAR(2)),2) AS 'yyyymmdd'

Resulteerd in:

Jaar Maand Dag yyyymmdd
---- ----- ---- --------
2009 9 16 20090916

Wil je alleen jaar,maand,dag wilt gebruiken kan dit natuurlijk ook met 3 specifieke functies:

SELECT
DAY(GETDATE()) AS 'Dag'
, MONTH(GETDATE()) AS 'Maand'
, YEAR(GETDATE()) AS 'Jaar'

"Moet ik dan iedere keer een lange query typen om iets eenvoudigs te realiseren". Kijk dan eens naar de mogelijkheden van SQL Server Management Studio Template Explorer.




vrijdag 11 september 2009

service users in Vista, Windows7 & Windows Server 2008 verbergen

Ik heb een laptop met Vista Enterprise waarop 3 instances van SQL actief zijn. SQL2000 / 2005 / 2008. Alle services van de instances draaien onder hun eigen service accounts.

Als je echter accounts aanmaakt in Vista worden deze automatisch getoond in het welcome screen als login accounts.

Hieronder zijn de stappen beschreven om deze accounts te verbergen:
1 - Start regedit.exe
2 - Ga naar key: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
3 - R_Klik op de Winlogon key en selecteer New > Key
4 - Typ SpecialAccounts , Let op is hoofdletter gevoelig
5 - R_Klik op de SpecialAccounts key en selecteer New > Key
6 - Typ UserList , Let op is hoofdletter gevoelig
7 - R_Klik op de UserList key en selecteer New > DWORD (32-bit) Value
8 - Type de usernaam die je wilt verbergen ook deze is hoofdlettergevoelig
9 - Voer een 0 (nul) in voor de Value Data , 0 verbergt het account van het welcome login screen, 1 maakt het zichtbaar.

vrijdag 4 september 2009

SSIS Truncation Warning (die niet nodig is)

Ik heb een SSIS package voor het verzamelen van gegevens van SQL2000 instances in het netwerk informatie tbv een migratie inventarisatie naar SQL 2008.

Een van de stappen is een DFT met een OLE_SRC query:

SELECT CONVERT(nchar(1),SERVERPROPERTY('ISCLUSTERED)) AS 'IsClusterd'
en een paar andere properties die voor de uitleg niet van belang zijn


De SS_DST tabel bevat een nchar(1) kolom voor het opslaan van deze property. SSIS blijft echter een warning geven:

ServerInfo_BaseInfo [37]: Truncation may occur due to inserting data from data flow column "IsClustered" with a length of 255 to database column "IsClustered" with a length of 1.

Waarom? Het veld is toch echt 1 lang. Ik zou een DCNV kunnen toevoegen om het veld echt op 1 lengte te zetten, dit helpt maar waarom gaat het fout?

Waarschijnlijk heb ik een later stadium pas the convert(nchar(1) toegevoegd), helaas wordt de SQL meta data voor de output columns niet bijgewerkt in de OLE_SRC.

Oplossing:

Ga naar Advanced edit mode van de OLE_SRC query


Deze eerste External Columns staat reeds goed dus dit is niet de oorzaak.















De Output columns dan maar even nakijken:


En daar is het issue, de length staat nog op 255, even aanpassen en de truncate errors zijn verdwenen.