SQL SERVER – SPARSE Property Doesn’t Carry Forward Using SELECT INTO

During one of the recent posts on a SQLBangalore UG FB page, one of the members asked an interestingly simple question. He was asking why is it that when you use SELECT-INTO to create a new table the triggers are not getting carried forward as part of the definition. A number of folks answered and it was a great learning experience for me personally. This blog was inspired from that post and I thought to add a different spin to it. My spin: the SPARSE property is not carried forward either.

Though the basic premise of Triggers etc. are written on the FB page, let me ask you a simple question. Though using SELECT-INTO bring forward most of the attributes of the columns during the definition. It is not always true that the definitions will move forward.

One of the outlets that I found recently is the definition of the columns as SPARSE. One person asked that I was writing a lot of blogs around SPARSE columns and if the same will be taken forward while doing a SELECT INTO. The best to learn this is by testing in our environment, here is the script I have used:

-- Create a table and insert a row
CREATE TABLE tbl_host (Age SMALLINT sparse, Name VARCHAR(25));
INSERT INTO tbl_host VALUES (24, 'SQLAuthority');
-- Create a new table from the original
SELECT * INTO tbl_Copy FROM tbl_host;
-- See if the sparse property was carried over
SELECT OBJECT_NAME(OBJECT_ID) AS tabname,
name AS colname,
column_id,
is_sparse
FROM sys.columns
WHERE OBJECT_ID = OBJECT_ID( 'tbl_host') OR OBJECT_ID = OBJECT_ID( 'tbl_Copy');
-- Clean up time
DROP TABLE tbl_host
DROP TABLE tbl_Copy

The output of the above script would look like:

Tool window displaying results from query on database tables.

From this it is evident that the SPARSE property is not carried forward when we use SELECT-INTO to create a new table. I would love to learn from you folks on other things that don’t carry forward when we use SELECT-INTO. Tell me what scenario’s you were surprised and learnt something new while using the SELECT-INTO clause. Use the comments section to share your knowledge.

Published by Pinal Dave on SQLAuthority. More of my work at pinaldave.com.


Discover more from SQL Authority with Pinal Dave

Subscribe to get the latest posts sent to your email.

Previous Post
SQL SERVER – Startup Problem – FIX – Error 5118, Severity 16, State 1
Next Post
Autogrowth Settings: Why 1 MB and 10 Percent Still Hurt

Related Posts

No results found.

2 Comments. Leave new

  • MSDN: Sparse columns are a property of the storage layer, rather than the logical table. Therefore a SELECT…INTO statement does not copy over the sparse column property into a new table.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.