Átlagos időpont time adattípusra

A mai napi agymenés  Szüksége volt valakinek egy átlagszámításra... igen ám de time adattípusra. Az SQL Server nem igazán enged erre átlagot számolni, így meg kellett írni. A time típust nem igazán lehet konvertálni se float se int típusra - amik már használhatóak lennének az AVG függvénynek, így ez még egy kic... [More]

uniqueidentifier összehasonlítás SQL Server-ben

Na ez is egy őrült ötlet de miért ne... Vajon az alábbi lekérdezésnél melyik GUID nagyobb? DECLARE @A uniqueidentifier = '0CB2DC09-D93C-4CFF-8D49-000000000001'; DECLARE @B uniqueidentifier = '66454F18-F2D1-4934-85CD-000000000001'; SELECT @A AS [A], @B AS [B], CASE WHEN @A > @B THEN 'A' ELSE 'B' END AS [GuidCompare], CASE WHEN CAST(@A as varchar(36)) > CAST(@B AS varchar(36)) THEN 'A' ELSE 'B' END AS [StringCompare] GO Szerintem itt min... [More]

SQL Server 2012 Transact SQL új funkciók – Sequence

“Pár” új, régen várt funkcióval bővült a T-SQL nyelv az SQL Server 2012 verzióban. Mivel éppen aktuális a dolog, szeretnék párat bemutatni. Az első a Sequence azaz számsor, sorozat. A legjobban az IDENTITY-hez lehet hasonlítani: amíg az IDENTITY egy tábla oszlopához rendlhető, addig a Sequence (számsor) több tábla több oszlopához rendelhető sorozatot tesz lehetővé. Például: Legyen két táblám, table1 és table2. Mindkét táblának legyen egy ID oszlopa int adattípussal, amit egy sorozatból s... [More]

Adatbázisok méretének lekérdezése

Az alábbi lekérdezés segít megnézni, hogy mely adatbázisok, mennyi helyet foglalnak.   USE [tempdb] CREATE TABLE #DatabaseSize ( [database_name] sysname, [type_desc] nvarchar(50), [state_desc] nvarchar(50), [size_in_MB] bigint ); EXEC sp_MsForEachDb 'USE [?] INSERT INTO #DatabaseSize SELECT DB_NAME(), type_desc, state_desc, SUM(size * 8 / 1024) FROM sys.database_files GROUP BY type_desc, state_desc ' SELE... [More]

Adatbázis szintű jogok kilistázása

Az utóbbbi időben sokszor kérdezték különböző fórumokon, hogyan lehet kilistázni az adatbázis szintű jogokat. az alábbi script ezt megcsinálja: USE [?] GO SELECT DB_ID() AS [db_id], DB_NAME() AS [db_name], DPER.[class_desc], DPER.[permission_name], DPER.[state_desc], DPRI.[name], DPRI.[type_desc], CASE WHEN DPER.[class_desc] = 'DATABASE' THEN DB_NAME() WHEN DPER.[class_desc] = 'OBJECT_OR_COLUMN' AND DPER.[minor_id] = 0... [More]

Hasznos funkció: fnIsGuid

Ismét alkotni kellett, bár most a saját hülyeségem miatt  Van egy táblám, amiben nvarchar(max) típusú oszlopba sokfajta adatot tartok, de nekem csak azok kellenek, amik uniqueidentifier típusúak. Találtam egy függvényt (ezen az oldalon: http://weblogs.sqlteam.com/mladenp/archive/2005/08/16/7545.aspx), ami ezt a problémát megoldja: CREATE FUNCTION [dbo].[fnIsGUID] ( @input varchar... [More]

Hierarchikus adatok kezelése SQL Server segítségével – 1. rész

Az utóbbi időben igen sok esetben kellett hierarchikus adatokkal foglalkoznom, illetve interjúk során is fel szoktam tenni ezzel kapcsolatban kérdéseket. Az alábbiakban szeretném bemutatni, hogy a különböző SQL Server verziók esetében ezen adattípusokat hogyan lehet/érdemes kezelni. Mi lehet hierarchikus adat? Ezt az egyszerű kérdést talán a legjobban egy példával lehe... [More]

Lock escalation on partitioned tables

Locking is a necessary thing for better concurrency. SQL Server manages its locks automatically. In general: when a statement issues about 5000 locks on a single table or index, lock manager issues an escalation. Lock escaltion details can be found in BOL at here: http://msdn.microsoft.com/en-us/library/ms184286.aspx What if I have partitioned table? Do I really need to lock the whole table or index? I believe, most of the cases, answer is no. It may be enough to lock that particular ... [More]

PIVOT aggregáló funkció nélkül

Ma ismét elökerült ez az érdekes probléma: hogyan használjam a PIVOT operátort anélkül, hogy az értékek összesítve lennének pl. a SUM, AVG függvényekel. Nekem csak az értékek kellenek. A MIN és a MAX függvények ebben az esetben nagyon hasznosak :-) /*=============================================================================== Date: 2012.01.19 Descripti... [More]

Hogyan írjunk ki állapotinformációt hosszan tartó adatbázis műveletnél.

Az üzleti felhasználók nem igazán szeretnek várakozni egy-egy lekérdezésünk eredményére, türelmetlenek. Egy aprócska trükkel, még az 1-2 percig tartó lekérdezésünket is “szeretni” fogják Egy egyszerű példával szeretném ezt megmutatni: képzeljük el azt az esetet, amikor egy táblába 8M sort kell betölteni é... [More]