如果我在SQL Server(2005或2008)中使用带点号的数据库名称,例如“ MyApp.Sales”,这会引起任何问题吗?
如果我在SQL Server(2005或2008)中使用带点号的数据库名称,例如“ MyApp.Sales”,这会引起任何问题吗?
Answers:
您可以,但我不会。您总是必须用方括号将数据库名称包装起来,例如[MyApp.Sales]。
回顾一下:如果您珍惜自己的理智,那就不要这样做。
我认为即使在技术上可行,这也是一个非常糟糕的主意。
多年来,我发现许多人都很难理解由四部分组成的命名约定,尽管看起来很明显:
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]
使事情保持简单很重要。
不要在数据库名称,发布名称,用户名中使用句点。并且我强烈建议不要在名称中使用句点(列,表,视图,数据库等)。
更新:我可以确认,减号“-”会引起类似的问题。
这是发生了什么:
SQL Server使用脚本供内部使用,例如系统存储过程。如这里已经提到的,命令你使用有时会迫使你把名字放在括号,这是(微软严重?)不是(总是)还好存储过程使用。
实际上,由于存储过程会遍历所有数据库并且无法适当地转义数据库名称,因此我无法再清除遗赠信息。这个迭代是如此复杂,我无法在超过8个SP中对其进行修补。
另外,我无法使用MMC或脚本来编辑复制冲突。如果您有一个(One!)数据库,其名称中带有点号,则这些问题将在每个发行版的everey db上发生。
这些是我的事。如果基础很好,复杂的SQL操作将以sql语言处理,并且可以正常工作。
如果尝试使用Microsoft Query(通过ODBC)将数据库连接到excel工作表,则会获得一个配置向导,该向导可让您选择要连接的数据库。- AKZENT
这些错误可能在第三方软件中更常见,因此永远不要在sql服务器上的任何名称的每个名称中使用点。
我们的供应商之一选择引入模式名称:[System.Activities.DurableInstancing]。它破坏了我们的数据加载工具,因此我们现在有进一步的开发来应对它们的怪异之处。只是不要这样做。用一个 '-'。
-
当您可以使用下划线_
而不必完全将名称括在方括号中时,为什么要使用破折号?