升级到SQL Server 2008:升级使用BCP的VS2005 .NET程序

时间:2011-09-23 20:25:53

标签: .net sql-server-2008 upgrade bcp

我有VS2005 .NET C#程序。我的理解是VS2005仅针对.NET FW的2.0版本。该程序使用批量复制对象。我相信这个对象的源dll是Version 2 Framework系统文件夹中的System.Data.dll文件。

我的猜测是,在使用BulkCopy对象时,System.Data.dll必须调用BCP.exe的SQL Server 2005版本。目前,我们的数据库服务器上有两个版本的BCP.exe。很快,2005版本将被删除,我需要确保我的.NET程序将继续运行。

我的想法是使用VS2008将应用程序升级到Framework的3.5版本,我在DB服务器上验证了该版本。事实上,我看到所有版本的FW都在那里,包括1,1,2.0,3.5和4.0。我想如果我升级到3.5 FW,将使用2008版本的BCP.exe。

我如何知道我正在使用哪个版本的批量复制(BCP.exe)以确保只有2008 BCP.exe保留在我们的数据库服务器上时程序才能继续工作? enter image description here

3 个答案:

答案 0 :(得分:2)

如果您正在谈论SqlBulkCopy类,那么它根本不使用bcp.exe。因此,您的应用程序将在升级后按预期运行。

P.S。 Framework版本和SQL Server版本之间没有任何关联。

答案 1 :(得分:1)

来自MSDN docs的SqlBulkCopy:

  

Microsoft SQL Server包含一个名为bcp的流行命令提示实用程序,用于将数据从一个表移动到另一个表,无论是在单个服务器上还是在服务器之间。 SqlBulkCopy类允许您编写提供类似功能的托管代码解决方案。

换句话说,bcp.exe与您的问题无关。

较早版本的.NET Framework中包含的System.Data.SqlClient命名空间通常适用于较旧的SQL Server版本;我还没有在MSDN文档中看到他们未能调出SQL Server向后兼容性问题的任何地方。你最安全的选择就是重建.NET 3.5或4.0,就像你说的那样,它会获取最新的System.Data.SqlClient代码(它可以处理兼容性)。

如果您对它正在做的事情感到好奇,可以在运行应用程序时运行Sql Server Profiler,并查看SqlBulkCopy实际生成的SQL。您应该看到相对简单的SQL,它可以在2008年兼容。

答案 2 :(得分:0)

  • 如果您的应用在不安装任何SQL Server组件的其他服务器/ PC上运行,它仍可正常工作(假设您有.net框架)
  • SqlBulkCopy类调用bcp.exe。这是完全不相关的
  • 无论安装或未安装哪个版本的bcp.exe都无关紧要
  • 您的应用程序使用SQLBulkCopy不受SQL Server版本
  • 的影响