You can put pretty much any character you want into an object or schema name by enclosing the name in []‘s. This does not however mean that you should. There are two specific cases that I’ve seen that are in general a bad idea.

I’ve seen names that actually have []s around them.

CREATE SCHEMA [[bracket]]]
	CREATE TABLE [[bracket]]] (id int)
GO
SELECT * FROM [[backet]]].[[bracket]]]
GO

And other’s that have periods.

CREATE SCHEMA [do.t]
	CREATE TABLE [do.t].[do.t] (id int)
GO
SELECT * FROM [do.t].[do.t]
GO

Why is this a problem? Well you can see from above you have to do extra work to even do a select. Also there are a number of commands that just won’t work. Sp_help for example.

EXEC sp_help [[bracket]].[bracket]]]
GO
EXEC sp_help [do.t.do.t]
GO

And if nothing else they are really really confusing! So please do not put periods or brackets in object or schema names. Do it for me if not for yourself. I mean there is always that outside chance that I’ll have to work on your systems one day!


Filed under: Microsoft SQL Server, SQLServerPedia Syndication, T-SQL Tagged: code language, language sql, microsoft sql server, sql statements, T-SQL