Advertisements

Microsoft SQL Server 2019 | Features added to SQL Server on Linux

Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Microsoft SQL Server 2019 | Features added to SQL Server on Linux

Microsoft SQL Server 2019 CTP is out now. SQL Server 2019 brings innovative security and compliance features, industry-leading performance, mission-critical availability, and advanced analytics to all your key data workloads, now with support for big data built-in.

Following features have been added to SQL Server on Linux-

1. Replication
2. Active Directory integration
3. Distributed transactions

Replication

In SQL Server 2019, SQL Server on Linux instances can participate in transactional, merge, and snapshot replication topologies in the publisher, distributor, or subscriber roles.

Active Directory integration

SQL Server on Linux instances can be configured use Active Directory for authentication of users, for replication, and for distributed queries. SQL Server on Linux instances can now participate in Availability Groups that are authenticated by Active Directory, in addition to the support for certificate-based authentication included in SQL Server 2017 on Linux. As an alternative to Active Directory, SQL Server on Linux instances can now use OpenLDAP as a directory provider, making it easier to manage domain-joined Linux servers.

Distributed transactions

SQL Server on Linux instances can now initiate and participate in distributed transactions. This is achieved with a Linux version of the Microsoft Distributed Transaction Coordinator (MSDTC) that runs within the SQL Server process to help SQL Server participate in distributed transactions. With access to MSDTC, SQL Server on Linux can participate in distributed transactions with other third-party transaction coordinators, or if you have specific processing needs there is support for you to develop your own.

Refer below for more details-

https://www.mssqltips.com/sqlservertip/5710/whats-new-in-the-first-public-ctp-of-sql-server-2019/
https://redmondmag.com/articles/2018/09/24/sql-server-2019-preview-ignite.aspx
https://www.microsoft.com/en-us/sql-server/sql-server-2019
https://www.microsoft.com/en-us/sql-server/sql-server-2019#Install
https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2019-ctp
https://info.microsoft.com/ww-landing-SQLDB-Microsoft-SQL-Server-WhitePaper.html
https://info.microsoft.com/rs/157-GQE-382/images/EN-US-CNTNT-white-paper-DBMod-Microsoft-SQL-Server-2019-Technical-white-paper.pdf

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Performance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Server on Linux https://msbiskills.com/sql-server-on-linux/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com

Advertisements

SQL Puzzle | The Map Puzzle

Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


SQL Puzzle | The Map Puzzle

In this puzzle you have to map all the names with the remaining names. This was asked by one of my blog’s regular reader via email. Please check out the sample input and the expected output.

Sample Input

EID Name Age
1 A 25
2 B 35
3 C 45
4 D 45

Expected Output

Name Name Age
A    
B A 25
C B 35
C A 25
D C 45
D B 35
D A 25

Script – DDL and INSERT Sample Data

--

CREATE TABLE [b kumar]
(
	 EID INT
	,[Name] VARCHAR(10)
	,Age INT
)
GO

INSERT INTO [b kumar] VALUES
(1,'A',25),
(2,'B',35),
(3,'C',45),
(4,'D',45)
GO

SELECT * FROM [b kumar]
GO


--

–SOLUTION 1

--

SELECT a.Name, CONCAT(z.Name,'') Name,CONCAT(z.Age,'') Age FROM [b kumar] a
OUTER APPLY
(
	SELECT * FROM [b kumar] b
	WHERE a.EID > b.EID
)z
ORDER BY a.EID , z.EID DESC


--

OUTPUT – 1

--

Name       Name        Age
---------- ----------- -------------
A                      
B          A           25
C          B           35
C          A           25
D          C           45
D          B           35
D          A           25

(7 rows affected)



--

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Performance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Server on Linux https://msbiskills.com/sql-server-on-linux/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com

SQL OUTPUT PUZZLE | The Equal to puzzle

Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


SQL OUTPUT PUZZLE | The Equal to puzzle

In this puzzle you have to go through the SQL statement given below and provide us the output without executing the SQL on SSMS or any other onsite SQL tool.

Q1. What will be the Output of the below SQL Statement?

--

SELECT 1a

--

Output

--

a
-----------
1

(1 row affected)

--

Q2. What will be the Output of the below SQL Statement?

--

SELECT a = 15

--

Output

--

a
-----------
15

(1 row affected)

--

Q3. What will be the Output of the below SQL Statement?

--

SELECT 'a' = 15

--

Output

--

a
-----------
15

(1 row affected)

--

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Perfomance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com

SQL Puzzle | How to alter a column from null to not null

Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


SQL Puzzle | How to alter a column from null to not null

In this puzzle you have to make changes to the table properties to make a column to NOT NULL from NULL. The catch here is that how you can handle the existing NULL values.

Script – DDL and INSERT Sample Data

--

CREATE TABLE Nulls
(
	 Id INT NOT NULL
	,Vals INT NULL
)
GO

INSERT INTO Nulls VALUES (1,NULL) ,(2,20),(3,30) , (4,NULL)
GO

SELECT * FROM Nulls
GO

--

If you directly use the alter command (Alter Table….Alter Column) you will get below error.

--

ALTER TABLE Nulls 
	ALTER COLUMN Vals INT NOT NULL

--

Msg 515, Level 16, State 2, Line 20
Cannot insert the value NULL into column ‘Vals’, table ‘master.dbo.Nulls’; column does not allow nulls. UPDATE fails.
The statement has been terminated.

Here first we have to update the NULL values to some other value. And then we can update the column definition.

–SOLUTION 1–

--

UPDATE x
SET x.Vals = -1 
FROM Nulls x 
WHERE x.Vals IS NULL
GO

ALTER TABLE Nulls 
	ALTER COLUMN Vals INT NOT NULL
GO

--

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Performance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com

Advanced SQL | Fill the Price for missing months

Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Advanced SQL | Fill the Price for missing months

A very close friend given this to me. In this puzzle you have to fill the price of SKU & Color Id for missing months. Note that SKU & Color Id should be considered as a business unit. So you have to set the previous value available to the missing month. Please check out the sample input and the expected output. In this solution I have not considered any performance considerations. 🙂

Sample Input

SKU ColorId Price YM
1 1 10.0000 201801
1 1 12.0000 201804
2 1 80.0000 201704
3 1 28.0000 201704
3 1 20.0000 201804
3 1 19.0000 201806
3 1 27.0000 201808

Expected Output

SKU ColorId Price Ym
1 1 0.0000 201701
1 1 0.0000 201702
1 1 0.0000 201703
1 1 0.0000 201704
1 1 0.0000 201705
1 1 0.0000 201706
1 1 0.0000 201707
1 1 0.0000 201708
1 1 0.0000 201709
1 1 0.0000 201710
1 1 0.0000 201711
1 1 0.0000 201712
1 1 10.0000 201801
1 1 10.0000 201802
1 1 10.0000 201803
1 1 12.0000 201804
1 1 12.0000 201805
1 1 12.0000 201806
1 1 12.0000 201807
1 1 12.0000 201808
2 1 0.0000 201701
2 1 0.0000 201702
2 1 0.0000 201703
2 1 80.0000 201704
2 1 80.0000 201705
2 1 80.0000 201706
2 1 80.0000 201707
2 1 80.0000 201708
2 1 80.0000 201709
2 1 80.0000 201710
2 1 80.0000 201711
2 1 80.0000 201712
2 1 80.0000 201801
2 1 80.0000 201802
2 1 80.0000 201803
2 1 80.0000 201804
2 1 80.0000 201805
2 1 80.0000 201806
2 1 80.0000 201807
2 1 80.0000 201808
3 1 0.0000 201701
3 1 0.0000 201702
3 1 0.0000 201703
3 1 28.0000 201704
3 1 28.0000 201705
3 1 28.0000 201706
3 1 28.0000 201707
3 1 28.0000 201708
3 1 28.0000 201709
3 1 28.0000 201710
3 1 28.0000 201711
3 1 28.0000 201712
3 1 28.0000 201801
3 1 28.0000 201802
3 1 28.0000 201803
3 1 20.0000 201804
3 1 20.0000 201805
3 1 19.0000 201806
3 1 19.0000 201807
3 1 27.0000 201808

Script – DDL and INSERT Sample Data

--

CREATE TABLE SkuData
(
	 SKU BIGINT 
	,ColorId BIGINT  
	,Price DECIMAL(30,4)
	,YM INT	
)
GO

INSERT INTO SkuData VALUES 
(1,	1,10,201801),
(1,	1,12,201804),  /* Price changed in 2018 April */
(2, 1,80,201704),  /* Started in the 2017 April */
(3, 1,28,201704),  /* Price changed for this product 4 times*/
(3, 1,20,201804),
(3, 1,19,201806),
(3, 1,27,201808)
*/

SELECT * FROM SkuData
GO

--

–SOLUTION 1

--

DECLARE @StartYear AS INT = (SELECT MIN(LEFT(YM,4)) FROM SkuData)
;WITH CTE(Num) AS
(
    SELECT Number
    FROM (VALUES ('01'), ('02'), ('03'), ('04'), ('05'), ('06'), ('07'), ('08'),
    ('09'), ('10'),('11'),('12')) AS X(Number)
)
,SingleDigits(Number) AS
(
    SELECT Number
    FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8),
    (9), (0)) AS X(Number)
)
,Series AS
(
    SELECT (d1.Number+1) + (10*d2.Number) Number
    from
    SingleDigits as d1,
    SingleDigits as d2
)
,CTE2 AS 
(
	SELECT  sku, colorId, CONCAT(xx,Num) * 1 Num FROM
	(
		SELECT * , (@StartYear+(Number-1)) xx  FROM Series
		CROSS JOIN CTE
		CROSS JOIN (SELECT DISTINCT Sku,ColorId FROM SkuData)x
		WHERE (@StartYear+(Number-1)) <= YEAR(GETDATE())
	)k	
)
,CTE3 AS
(
	SELECT x.ColorId , x.SKU , b.Price , b.YM ,x.Num FROM CTE2 x
	LEFT JOIN SkuData b ON x.Num = b.YM  AND x.ColorId = b.ColorId and x.SKU = b.SKU	
	WHERE Num <= CONCAT(YEAR(GETDATE()),RIGHT(CONCAT('0',MONTH(GETDATE())),2))
)
,CTE4 AS
(
	SELECT z.ColorId , z.SKU , z.Price , Num 
	,ROW_NUMBER() OVER (PARTITION BY z.ColorId,z.SKU ORDER BY Num) rnk 
	FROM CTE3 z	
)
SELECT SKU,ColorId,ISNULL(Price,0) Price, Ym FROM 
(
	SELECT a.SKU, a.ColorId,ISNULL(a.Price,r.Price) Price, Num Ym
	FROM CTE4 a
	OUTER APPLY (
				 SELECT TOP 1 rnk Mins FROM CTE4 x WHERE x.ColorId = a.ColorId AND x.SKU = a.SKU
				 AND a.rnk > x.rnk AND x.Price IS NOT NULL
				 ORDER BY x.Num DESC
				)x
	OUTER APPLY
			   (
				 SELECT TOP 1 Price 
				 FROM CTE4 b			 
				 WHERE b.rnk = x.Mins
				 AND a.ColorId = b.ColorId AND a.SKU = b.SKU
			   )r
)z
ORDER BY Sku , ColorId,Ym

--

OUTPUT – 1

--

SKU                  ColorId              Price                                   Ym
-------------------- -------------------- --------------------------------------- -----------
1                    1                    0.0000                                  201701
1                    1                    0.0000                                  201702
1                    1                    0.0000                                  201703
1                    1                    0.0000                                  201704
1                    1                    0.0000                                  201705
1                    1                    0.0000                                  201706
1                    1                    0.0000                                  201707
1                    1                    0.0000                                  201708
1                    1                    0.0000                                  201709
1                    1                    0.0000                                  201710
1                    1                    0.0000                                  201711
1                    1                    0.0000                                  201712
1                    1                    10.0000                                 201801
1                    1                    10.0000                                 201802
1                    1                    10.0000                                 201803
1                    1                    12.0000                                 201804
1                    1                    12.0000                                 201805
1                    1                    12.0000                                 201806
1                    1                    12.0000                                 201807
1                    1                    12.0000                                 201808
2                    1                    0.0000                                  201701
2                    1                    0.0000                                  201702
2                    1                    0.0000                                  201703
2                    1                    80.0000                                 201704
2                    1                    80.0000                                 201705
2                    1                    80.0000                                 201706
2                    1                    80.0000                                 201707
2                    1                    80.0000                                 201708
2                    1                    80.0000                                 201709
2                    1                    80.0000                                 201710
2                    1                    80.0000                                 201711
2                    1                    80.0000                                 201712
2                    1                    80.0000                                 201801
2                    1                    80.0000                                 201802
2                    1                    80.0000                                 201803
2                    1                    80.0000                                 201804
2                    1                    80.0000                                 201805
2                    1                    80.0000                                 201806
2                    1                    80.0000                                 201807
2                    1                    80.0000                                 201808
3                    1                    0.0000                                  201701
3                    1                    0.0000                                  201702
3                    1                    0.0000                                  201703
3                    1                    28.0000                                 201704
3                    1                    28.0000                                 201705
3                    1                    28.0000                                 201706
3                    1                    28.0000                                 201707
3                    1                    28.0000                                 201708
3                    1                    28.0000                                 201709
3                    1                    28.0000                                 201710
3                    1                    28.0000                                 201711
3                    1                    28.0000                                 201712
3                    1                    28.0000                                 201801
3                    1                    28.0000                                 201802
3                    1                    28.0000                                 201803
3                    1                    20.0000                                 201804
3                    1                    20.0000                                 201805
3                    1                    19.0000                                 201806
3                    1                    19.0000                                 201807
3                    1                    27.0000                                 201808

(60 rows affected)



--

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Performance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com