我有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保留在我们的数据库服务器上时程序才能继续工作?
答案 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)