2017 försvann snabbt och det är dags för ett nytt år. 2017 var ett innehållsrikt år, SQL 2017, nya versioner av Management Studio och två helt nya verktyg för SQL Server!
Med SQL 2017 kom en hel del nya och förbättrade funktioner. De som vi ser gjort stor nytta är bland annat resumable online index rebuild, adaptive query processing, automatic database tuning och förbättringar av in-memory funktionaliteten.
Microsoft har även släppt en hel del nya funktioner under året till Management studio, senaste versionen har en intressant Vulnerability Assessment funktion för säkerhetsarbetet runt en databas. Ser väldigt smidigt ut, det vi gjort tidigare manuellt i Excel ark (se tidigare bloggposter om SQL Server säkerhet) finns nu tillgängligt direkt i SSMS.
Ni kan läsa mer om det bland annat här:
https://blogs.technet.microsoft.com/dataplatforminsider/2017/12/11/whats-new-in-ssms-17-4-sql-vulnerability-assessment/
Ett av de nya verktygen ser ut som en eventuell ersättare av SQLCMD, mssql-cli, byggd i pyhton (krävs en installation av python för att kunna köras), open source, freeware, OS oberoende och med intellisense! https://github.com/dbcli/mssql-cli/
För er som vill ha lite mer gränssnitt men tycker att SSMS är lite overkill, titta då på det andra verktyget Microsoft nyligen släppte: SQL Operations Studio. Den har samma trädstrukturer för databaser och objekt och frågefönster etc. som SSMS men inte all funktionalitet. I stället ger den andra möjligheter som att kunna ha grafer och KPi:er över t ex backupper, databasstorlekar, ledigt diskutrymme eller prestanda direkt i verktyget. https://docs.microsoft.com/en-us/sql/sql-operations-studio/download
Tack för i år och god jul och gott nytt år till alla bloggläsare, kunder och kollegor!
Som vanlig kör nedan skript på SQL 2016 eller senare med resultatet som text 🙂
SET NOCOUNT ON;
DECLARE @t table (id int, r nvarchar(125))
INSERT INTO @t
VALUES(1,'32;8,44;1,45;3,46;1,95;1'),
(2,'32;6,95;1,47;1,95;1,44;1,95;1,92;1,40;1,95;1,41;1'),
(3,'32;5,40;1,95;1,44;1,95;1,44;1,44;1,95;1,44;1,41;1'),
(4,'32;6,47;1,32;1,97;1,32;1,97;1,32;1,92;1'),
(5,'32;5,47;1,39;1,44;1,46;1,111;1,46;1,44;1,39;1,92;1'),
(6,'32;3,95;1,40;1,44;1,32;1,39;1,32;1,44;1,32;1,39;1,32;1,44;1,41;1,95;1'),
(7,'32;1,44;1,47;1,95;1,47;1,39;1,45;1,44;1,46;1,44;1,46;1,44;1,45;1,39;1,92;1,95;1,92;1,44;1'),
(8,'40;1,44;1,46;1,47;1,44;1,95;4,58;1,95;4,44;1,92;1,46;1,44;1,41;1'),
(9,'40;1,95;1,41;1,40;1,95;4,91;1,45;1,93;1,95;4,41;1,40;1,95;1,41;1'),
(10,'32;3,124;1,32;1,95;3,32;1,124;1,32;1,95;3,32;1,124;1'),
(11,'32;3,40;1,44;1,95;1,44;1,95;1,47;1,32;1,92;1,95;1,44;1,95;1,44;1,41;1'),
(12,'32;4,40;1,95;2,41;1,32;3,40;1,95;2,41;1')
;WITH cc AS (
SELECT id, s.value AS c
FROM @t
CROSS APPLY STRING_SPLIT(r, ',') s
),
c AS (
SELECT id, c, REPLICATE(CHAR(SUBSTRING(c, 1, CHARINDEX(';',c)-1)), SUBSTRING(c, CHARINDEX(';',c)+1, 8000)) AS s
FROM cc
)
SELECT REPLACE(LTRIM(SUBSTRING(
(
SELECT '^' + CAST(t2.s AS varchar(25))
FROM c t2
WHERE t1.id = t2.id
FOR XML PATH('')
)
,0,40)),'^', '') AS [God Jul! önskar Itm8]
FROM c t1
GROUP BY t1.id
ORDER BY t1.id