我有一个如下所示的SQL语句: -
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE '+@DbName+'
EXEC (@SQL)
当我尝试执行此声明时,它正在删除' .18'从我的DbName和抛出数据库模型54不存在的错误。
知道如何解决这个问题吗?
答案 0 :(得分:3)
您需要使用Quotename
来转义数据库名称中的dot
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='USE '+quotename(@DbName)
print @sql
EXEC (@SQL)
答案 1 :(得分:3)
试试这样:
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE ['+@DbName+']'
EXEC (@SQL)
或者像这样:
DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)
SET @SQL='
USE '+QUOTENAME(@DbName)
EXEC (@SQL)