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) […]

Adatelérés két adatbázis között

Két db között a legegyszerűbb adatelérés, ha mindkét db-ben létrehozzuk ugyanazt a user-t megfelelő jogosultságokkal. Ekkor semmi dolgunk. Amennyiben viszont két különböző db között kell megteremteni az adatelérést, akkor ugyan szintén használható a fenti módszer, de ennél szigorúbb eljárást is követhetünk. Tegyük fel van 2 adatbázisunk (db1, db2) és a db1-ben lévő táblát akarjuk elérni […]

Szinonima hivatkozások cseréje

Gyakran használjuk a szinonimákat arra, hogy egy másik adatbázis objektumaira úgy hivatkozhassunk, mintha sajátunk volna. Pl: CREATE SYNONYM dbo.TAG FOR [DB].[dbo].[TAG]; Így a programban vagy az adatbázisunk többi objektumaiban csak a TAG-re hivatkozhatunk.  Viszont, ha le kell cserélni az összes hivatkozást mondjuk a DB2 adatbázisra, akkor arra a következő script tud segíteni: — SIS_HRINTERFACE és az SWORK2SIS szinonimák hivatkozásainak cseréje a SIS_DB-re SET NOCOUNT ON declare @prn int […]

WMI Alert

Az SQL Server eseményei a Windows Management Instrumentation (WMI) szolgáltatáson keresztül is figyelhető. Tipikus példa az adatbázis tükrözés státusz változásának figyelése. Példa a következő linken: https://technet.microsoft.com/en-us/library/cc966392.aspx Az események szűrését a WMI Query Language-el (WQL) tudjuk megvalósítani. A WQL szintaktikája hasonló az SQL-hez (annál jóval egyszerűbb link: https://msdn.microsoft.com/en-us/library/aa394606(VS.85).aspx) A fenti példában például a tükrözéskor bekövetkező Automatic Fail Over státuszt […]

SQL Server engine újdonságai 2008-2016

Az alábbi linkeken összegyűjtöttem a 2008-tól megvalósított legfontosabb újdonságokat, illetve a különösen figyelemre méltókat külön felsorolom: 2008 R2: Új típusok: Date, Time, User-Def. Table Type Parancsok: Merge Table-Value paraméter Sparse oszlop https://technet.microsoft.com/en-us/library/09f0096e-ab95-4be0-8c01-f98753255747(v=sql.105) 2012: Sequence objektum Pagination (Lapozás) Contained Database (Nincs login, userhez van jelszó) Error handling: Throw https://msdn.microsoft.com/hu-hu/library/09f0096e-ab95-4be0-8c01-f98753255747(v=sql.110) példák: http://www.codeproject.com/Articles/526621/Top-exciting-features-of-SQL-Server-Part#Feature_number_2_(Evolution):-_Sequence_objects 2014: Updateable columnstore index Delayed […]

Szöveg keresése tároltakban

DECLARE @Search varchar(255) SET @Search=’keresett string’ SELECT DISTINCT o.name AS Object_Name,o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id=o.object_id WHERE m.definition Like ‘%’+@Search+’%’ ORDER BY 2,1 […]

Proxy user-ek

Gyakran előfordul, hogy pl. egy ütemezett feladatban cmd parancsot kell kiadni egy win. user nevében. Ilyenkor kell felvenni a proxy user-t és a job-ot az agent helyett ezzel a user-rel futtathatjuk. Lépések: 1. Credential user felvétele: (a username-nek egy létező WIN. usernek kell lennie) USE [master] GO CREATE CREDENTIAL [credentialName] WITH IDENTITY = N’username’, SECRET […]

1 2 3 5