在SQL Server数据库名称中加点可以吗?


Answers:



36

我认为即使在技术上可行,这也是一个非常糟糕的主意

多年来,我发现许多人都很难理解由四部分组成的命名约定,尽管看起来很明显:

server_name.database_name.schema_name.object_name

想象一下,如果他们看到这样的话会发生什么:

MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts

要么:

[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]

使事情保持简单很重要。


15

万一有人遇到这个问题...

请记住,这不仅是一个坏主意,因为用户可能会感到困惑,而且还因为某些工具可能会感到困惑。

甚至Microsoft本身也有问题。如果尝试使用Microsoft Query(通过ODBC)将数据库连接到excel工作表,则会获得一个配置向导,该向导可让您选择要连接的数据库。但是,选择包含点的数据库将产生错误,指出找不到服务器。似乎该向导不会检查值是否需要转义,而是盲目地将标识符连接起来。

当然有工作环境,但是您可以避免从一开始就避免麻烦。


7

不要在数据库名称,发布名称,用户名中使用句点。并且我强烈建议不要在名称中使用句点(列,表,视图,数据库等)。

更新:我可以确认,减号“-”会引起类似的问题。

这是发生了什么:

SQL Server使用脚本供内部使用,例如系统存储过程。如这里已经提到的,命令你使用有时会迫使你把名字放在括号,这是(微软严重?)不是(总是)还好存储过程使用

实际上,由于存储过程会遍历所有数据库并且无法适当地转义数据库名称,因此我无法再清除遗赠信息。这个迭代是如此复杂,我无法在超过8个SP中对其进行修补。

另外,我无法使用MMC或脚本来编辑复制冲突。如果您有一个(One!)数据库,其名称中带有点号,则这些问题将在每个发行版的everey db上发生。

这些是我的事。如果基础很好,复杂的SQL操作将以sql语言处理,并且可以正常工作。

如果尝试使用Microsoft Query(通过ODBC)将数据库连接到excel工作表,则会获得一个配置向导,该向导可让您选择要连接的数据库。- AKZENT

这些错误可能在第三方软件中更常见,因此永远不要在sql服务器上的任何名称的每个名称中使用点。


6

名称中允许使用许多字符,但是约定和常识限制了特殊字符的使用。“ _”(下划线)是公认的最安全的分隔符,并易于阅读。


1

相同:外键名称不应包含任何点。

我发现,如果您需要重命名这样的名称,那么您将需要使用方括号来进行sp_rename工作(因为重命名外键时需要指定架构)。

例:

sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'

如果忘记括号,则会出现错误:15225


-1

我们的供应商之一选择引入模式名称:[System.Activities.DurableInstancing]。它破坏了我们的数据加载工具,因此我们现在有进一步的开发来应对它们的怪异之处。只是不要这样做。用一个 '-'。


5
-当您可以使用下划线_而不必完全将名称括在方括号中时,为什么要使用破折号?
ErikE 2015年

3
减号会导致其他但类似的问题。
丹尼尔(Daniel)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.