从 SQL Server 2005 迁移到 SQL Server 2008:强制在表名之前使用架构名

Posted

技术标签:

【中文标题】从 SQL Server 2005 迁移到 SQL Server 2008:强制在表名之前使用架构名【英文标题】:Migrating from SQL Server 2005 to SQL Server 2008 : forced to use schema name before table name 【发布时间】: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的编辑,我也从中学到了:) 【参考方案1】:

默认方案将为您工作。这种方法有什么问题?

更改架构名称会导致大问题,不建议这样做。架构名称在哪里以及改变了多少?(想想)。

您只需先设置一个只有一个过程的默认模式,然后检查是否可以。然后更改整个数据库架构。

https://dba.stackexchange.com/questions/21158/net-sql-server-authentication-schema-issue

In sql server 2005, how do I change the "schema" of a table without losing any data?

Change Schema Name Of Table In SQL

Best practice for SQL Server 2008 schema change

【讨论】:

我确实设置了默认架构,但它并没有解决问题..也许我没有正确执行:在 Microsoft Sql Server Management Studio 中,在 [database]->security-> users 我右键单击该用户,然后选择“属性”。在第一页中,我已将默认架构设置为所需的名称。 在上面的第二个和第三个链接中,它会显示更改模式名称。更改架构名称时还显示其他链接。 Ajay2707,非常感谢您的回答。但是我知道如何更改表的架构名称。我为某些表做了它并且它有效,我的问题是这种做法是否会导致我出现其他类型的问题,而您的回答是:是的,它会导致大问题并且不可取..我的第二个问题是是否有其他解决方案?为用户设置默认架构的解决方案(您首先提出的)对我不起作用..我做错了什么吗?我在对您的第一个答案的评论中描述了我的做法 亲爱的,我了解您的问题。当您迁移时,最好使用您的架构或其他选项生成脚本,即生成没有架构的脚本并在 sql 中设置默认架构,您想要的然后运行脚本。所以按照我的建议重新测试。从开始做起,在运行之前设置所有内容脚本。运行脚本或迁移后不要手动更改。这肯定对你有用。我有同样的问题。首先我包含架构,因为我的默认架构是 dbo,但在生产中它是其他的并且有问题。终于解决了,因为我是在没有 sc 的情况下生成脚本。名称,所以将采用默认模式并且它可以工作。 非常感谢 Ajay2707。我会照你说的做,我希望这能解决它..再次感谢

以上是关于从 SQL Server 2005 迁移到 SQL Server 2008:强制在表名之前使用架构名的主要内容,如果未能解决你的问题,请参考以下文章

谁能建议将数据库从 SQL Server 2008 迁移到 2005 的最佳方法?

使用 SSMA 将 Access 2007 数据库应用程序迁移到 SQL Server 2005 - 问题

从 SQL Server 2016 到 SQL Server Management Studio 2005 的 ETL

使用存储过程将记录从 SQL Server 复制到 SQL Server (2005)

Access 2003:从 SQL Server 2005 切换到 SQL Server 2012 有啥并发症吗?

“用户'NT AUTHORITY ANONYMOUS LOGON'登录失败。”到SQL Server 2005