Category: Uncategorised

Teljesítmény növelési módszerek

Összegyűjtöttem néhány hasznos technológiát, amivel az SQL Server adatbázisunk teljesítményét tudjuk növelni (teljesség igénye nélkül): fotók tárolása az NT file system-en (már SQL 2008-tól) https://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/   Memória optimalizált táblák (2014-től) http://robtiffany.com/create-in-memory-database-tables-sql-server-2014/   Filtered index (2008-tól) https://www.simple-talk.com/sql/performance/introduction-to-sql-server-filtered-indexes/ Tábla particiónálás (2008 Enterprise) https://www.mssqltips.com/sqlservertip/2888/how-to-partition-an-existing-sql-server-table/   Table compression https://msdn.microsoft.com/en-us/library/cc280449(v=sql.105).aspx TEMPDB https://technet.microsoft.com/en-us/library/ms175527(v=sql.105).aspx […]

Változások kezelése a rowversion típussal

A legegyszerűbb módja a változások kezelésére az, ha az adott táblákra felveszünk egy rowversion típusú oszlopot. CREATE TABLE states ( id CHAR(2), name VARCHAR(90), rv ROWVERSION ); A nagy előny, hogy Insert vagy Update parancsra az oszlop értéke változik, nem kell hozzá trigger. Az aktuális értéket a teljes DB-re vonatkozóan a @@DBTS változó tartalmazza. Ha a […]

Impersonate user

Ez a technika, arra szolgál, hogy a tényleges user-ek csak minimális jogokat kapjanak. Például csak tároltakon keresztül végezhetnek műveleteket. Ez esetben a tároltakhoz rendeljük az impersonate usert (példában a Imp_TruncateMe) — Create table to truncate CREATE TABLE TruncateMe (Id int NOT NULL IDENTITY(1,1)) GO — User that has permission to truncate the table CREATE USER Imp_TruncateMe […]

Függőségek megtartása (SQL 2008)

Sokszor előfordul, hogy az adatbázis módosítás elrontja a függő objektumaink működését. Nézzünk erre egy példát: CREATE TABLE [dbo].[testtbl]( [a] [int] NOT NULL, [b] [int] NOT NULL, [c] [int] NOT NULL ) ON [PRIMARY] GO insert into v_testtbl(a,b,c) values (1,2,3) GO CREATE VIEW dbo.v_testtbl AS SELECT * FROM [testtbl] GO ALTER TABLE testtbl add d varchar(10) […]

Törlés nagy táblából

A trükk a Checkpoint, ami a változásokat a memóriában hajtja végre és nem a diszken minden alkalommal. A WAITFOR pedig segít a szervernek levegőhöz jutni. DECLARE @DelDate DATETIME; SET @DelDate = DATEADD(d,-60,GETDATE()); WHILE 1 = 1 BEGIN — Choose records count as per your records size. DELETE TOP (1000) FROM MyTableName WHERE column_name < @DelDate […]