从 SQL Server 2008 升级应用程序以使用 SQL Server 2016

Posted

技术标签:

【中文标题】从 SQL Server 2008 升级应用程序以使用 SQL Server 2016【英文标题】:Upgrade Application to use SQL Server 2016 from SQL Server 2008 【发布时间】:2018-07-04 02:37:41 【问题描述】:

我有一个使用 SQL Server 2008 Express SP2 开发的 32 位应用程序,因为我们正在迁移到 Windows 10,我们将使用 SQL Server 2016 Express,当我启动应用程序时出现以下错误:

Message:Could not load file or assembly 'Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

我通过在我的机器上安装适用于 32 位 2008 的 CLR 类型和 SMO 修复了这些错误。我还在 Visual Studio 中注意到我对 Microsoft.SqlServer.ConnectionInfo、Microsoft.SqlServer.Management.Sdk.Sfc 和 Microsoft.SqlServer.Smo 的引用使用新的 SQL Server 更新了它们的路径(在 2008 SMO 安装之前),但我仍然得到这个错误。

我可以在应用程序中做些什么来避免这个错误?它只是更新参考吗?

【问题讨论】:

如果您想使用 Sql Server 2016,为什么要为 2008 安装 SMO?我会安装 2016 年的版本。microsoft.com/en-us/download/details.aspx?id=52676 @Steve 项目引用 .dll 的 v10 而 2016 年是 v14 @nessa 您需要迁移您的应用程序,而不仅仅是在新操作系统上按原样运行它。特别是 32 位已死 - 您应该编译和运行 64 位应用程序,这些应用程序使用 2016 年的适当库以及使用的 .Net 版本。是的 - 这意味着您可能需要在您的应用程序中重构代码。如果你不这样做,你并没有真正升级你的应用程序。从您遇到的问题中学习 - 向后兼容性存在限制。十年的等待太久了。 @SM我同意,我会继续努力的,我想知道是否有办法在同一个应用程序中使用多个版本的 sql server 【参考方案1】:

这里存在“C:\WINDOWS\assembly\”吗?

Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.ConnectionInfoExtended.dll
Microsoft.SqlServer.PolicyEnum.dll
Microsoft.SqlServer.RegSvrEnum.dll
Microsoft.SqlServer.ServiceBrokerEnum.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SmoExtended.dll

试试这个

gacutil /i "C:\Program Files\Microsoft SQL 
Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll"

regasm "C:\Program Files\Microsoft SQL 
Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll"

【讨论】:

以上是关于从 SQL Server 2008 升级应用程序以使用 SQL Server 2016的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2升级到SQL Server 2012 SP1

sql server2008升级到2008 R2出现问题

SQL SERVER 2008 升级至SQL SERVER 2012

SQL_SERVER_2008升级SQL_SERVER_2008_R2的方法

如何将 SQL Server 2008 R2 SSIS 包升级到 SQL Server 2016?

Windows Server 2008 中的模拟