【发布时间】:2014-07-20 21:44:20
【问题描述】:
我有两个连接到 SQL Server 2005 数据库的大程序。
现在我们将迁移到带有 SQL Server 2008 的新服务器。当连接到新服务器时,这些程序不再工作,原因是在程序中的所有查询中只使用了表名,并且它们不是dbo 表。所以 SQL Server 2008 无法识别它们,除非我在表名之前使用架构名称...
我很难将两个程序中的所有查询都更改为在表名称之前添加架构名称。
我在这个论坛上读到,如果我指定默认架构,问题将得到解决.. 但它还没有解决。
似乎唯一可行的解决方案是当我将表的架构更改为 dbo.. 但我不确定此操作是否可以执行,或者是否会导致与此修改相关的一些其他问题?
有没有更好的解决方案?
更改表的架构是否会给我带来其他类型的问题?
在此先感谢
【问题讨论】:
-
您只需为应用程序使用的用户设置默认模式,以匹配非 dbo 表所在的任何模式。此外,在处理数据库中的项目时,请学会始终使用 schema.object。未来的代码维护者和查询优化器会感谢你
-
我做到了,但它没有解决问题..也许我没有正确地做到这一点:在 Microsoft Sql Server Management Studio 中,在 [database]->security->users 我右键单击用户,并选择“属性”。在第一页中,我已将默认架构设置为所需的名称。
-
这就是为什么在 SQL 中始终使用模式限定名称是最佳实践的原因。 TechNet, SQL Server Central, SQL Server Mag.
-
你说得对,我才知道(和以前一样,它从来没有引起任何问题)。事实上,有问题的程序不是我自己开发的:)
-
感谢marc_s的编辑,我也从中学到了:)
标签: sql-server sql-server-2008