无法删除名称中带有连字符减号的数据库

Can't drop database with hyphen-minus in its name

提问人:complete_stranger 提问时间:11/15/2023 最后编辑:complete_stranger 更新时间:11/15/2023 访问量:143

问:

无法删除名称中包含连字符减号的数据库。该数据库称为 。nfm_example-F2_6

Delphi 代码如下所示:

try
 ...
finally
  DBConn.QueryExecNP('drop database [' + tempdbname + ']');
end;

我收到的错误消息:

----------------------------------------------------------------------------------------------------
Exception data (stack trace(s) and additional data):
----------------------------------------------------------------------------------------------------
Root: EMSError: Incorrect syntax near '-'.
SQL error list
SQL error 1
  Incorrect syntax near '-'.
  Error code: 102
  OLEDB error code: -2147217900
  Severity: 15
  State: 1
  Procedure:
  Line number: 1
 
SQL query text: drop database [nfm_example-F2_6]
Call stack for exception thread

它是 Microsoft SQL Server 2017 - 14.0.2037.2

怎么了?

更多信息:

DBConn 连接到不同的数据库,即主数据库或生产数据库。注意变量名称。tempdbname

数据库名称是有效的,因为它是可用的,我可以在 SSMS 中看到它。

正如您在异常中看到的那样,SQL Server 获取查询文本如下:

drop database [nfm_example-F2_6]

DBConn 是 devart 的 SDAC 接口。TMSConnection

sql-server delphi sql-server-2017

评论

1赞 AlwaysLearning 11/15/2023
这个错误可能是一条红鲱鱼。当前是否连接到?当任何会话连接到数据库时,不能删除该数据库。DBConnnfm_example-F2_6
0赞 Ondrej Kelle 11/15/2023
这看起来不像是有效的数据库名称
1赞 Dan Guzman 11/15/2023
该声明有效。似乎问题出在如何执行查询上。drop database [nfm_example-F2_6]QueryExecNP
1赞 Stu 11/15/2023
如果您使用正确的名称,会发生什么?quotename
0赞 Charlieface 11/15/2023
@OndrejKelle 如果使用 dbfiddle.uk/rNXK5mx4 进行逃逸,则完全合法[]

答: 暂无答案