Reputation: 55
I have a SQL statement like below:-
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE '+@DbName+'
EXEC (@SQL)
When I am trying to execute this statement it is removing '.18' from my DbName and throwing error that database model54 doesn't exists.
Any idea how to resolve this??
Upvotes: 0
Views: 146
Reputation: 56755
Try it like this:
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE ['+@DbName+']'
EXEC (@SQL)
Or like this:
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE '+QUOTENAME(@DbName)
EXEC (@SQL)
Upvotes: 3
Reputation: 93754
You need to use Quotename
to escape dot
in database name
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='USE '+quotename(@DbName)
print @sql
EXEC (@SQL)
Upvotes: 3