如果我在 SQL Server(2005 或 2008)中使用带点的数据库名称,例如“MyApp.Sales”,这会导致任何问题吗?
Mar*_*icz 38
我认为即使技术上可行,这也是一个非常糟糕的主意。
多年来,我发现很多人都难以理解四部分命名约定,即使它看起来很明显:
server_name.database_name.schema_name.object_name
Run Code Online (Sandbox Code Playgroud)
想象一下,如果他们看到这样的事情会发生什么:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
Run Code Online (Sandbox Code Playgroud)
或者:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
Run Code Online (Sandbox Code Playgroud)
保持简单很重要。
小智 16
如果其他人遇到这个问题......
请记住,这不仅是一个坏主意,因为用户可能会感到困惑,而且还因为某些工具可能会感到困惑。
甚至微软本身也有这方面的问题。如果您尝试使用 Microsoft Query(通过 ODBC)将您的数据库连接到 Excel 工作表,您将获得一个配置向导,让您选择要连接的数据库。但是,选择包含点的数据库将产生一个错误,指出无法找到服务器。向导似乎不会检查值是否需要转义并盲目地连接标识符。
当然有变通方法,但是如果从一开始就不这样做,可以为自己省去一些麻烦。
小智 10
不要在数据库名称、出版物名称、用户名中使用句点。我强烈建议永远不要在名称中使用句点(列、表、视图、数据库等)。
更新:我可以确认,减号、破折号“-”会导致类似的问题。
这是发生的事情:
SQL Server 将脚本用于内部使用,如系统存储过程。如这里已经提到的,命令你使用有时会迫使你把名字放在括号,这是(微软严重?)不是(总是)还好存储过程使用。
事实上,我无法再清理 abonnement 信息,因为存储过程遍历所有数据库并且没有正确地转义数据库名称。这个迭代很复杂,我无法在超过 8 个 SP 中修补它。
另外,我无法使用 MMC 或脚本来编辑复制冲突。如果您有一个(One!)数据库,其名称中有一个点,那么这些问题将发生在每个数据库、每个出版物上。
这些是我遇到的情况。复杂的 SQL 操作是用 sql 语言处理的,如果基础很好的话,它也能正常工作。
如果您尝试使用 Microsoft Query(通过 ODBC)将您的数据库连接到 Excel 工作表,您将获得一个配置向导,让您选择要连接的数据库。- aKzenT
这些错误可能更常见于 3rd 方软件中,因此永远不要在 sql server 上的任何名称中使用点。
| 归档时间: |
|
| 查看次数: |
44112 次 |
| 最近记录: |