SQL Server中含方括号的数据库无法连接,求正确语法
解决SQL Server含特殊字符数据库的连接问题
你的所有尝试语法都存在错误,正确的连接方式是用双重方括号转义数据库名中的方括号:
use [[[]my[]]database]
原因说明:
在SQL Server中,当标识符(比如数据库名、表名)包含方括号这类特殊字符时,必须用方括号包裹标识符,同时标识符内部的每个[需要替换为[[,每个]替换为]]。你的数据库名是[]my[]database,拆分转义后外层再套方括号,就得到上述正确语句。
其他尝试的错误点:
use []my[]database:未转义内部方括号,SQL Server会将[]识别为空标识符,解析失败use "[]my[]database":SQL Server默认不把双引号作为标识符包裹符(即使开启QUOTED_IDENTIFIER,双引号内的方括号也不会被转义)use "\[]my\[]database":反斜杠不是SQL Server的转义字符,无意义use QUOTENAME("[]my[]database"):QUOTENAME是函数,不能直接跟在USE后,需通过动态SQL调用:DECLARE @dbName NVARCHAR(128) = QUOTENAME('[]my[]database') EXEC('USE ' + @dbName)use [[]]my[]]database]:转义格式错误,未正确对应每个内部方括号的转义规则,导致标识符与实际数据库名不匹配
内容的提问来源于stack exchange,提问作者Sriram
相关产品推荐
相关产品推荐

