【问题标题】:Upgrading to SQL Server 2008: Upgrading a VS2005 .NET program that uses BCP升级到 SQL Server 2008:升级使用 BCP 的 VS2005 .NET 程序
【发布时间】:2011-09-23 20:25:53
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    附: Framework版本和SQL Server版本没有关联。

    【讨论】:

    • 是的,我说的是 SqlBulkCopy 类。我假设您打算编写 BCP.exe,而不是 dcp.exe?如果FW版本和SQL Server版本没有联系,我的PC上有多个版本的SQL Server,我怎么知道myh VS2005程序使用的是哪个版本?
    • 要连接到 SQL Server,您的应用程序使用连接字符串。在连接字符串中,您不仅要指定服务器的名称,还要指定服务器实例的名称。您可以在连接字符串中找到数据源属性。因此,“Data Source=MYCOMPUTER\INSTANCE_ON_SQL2005”和“Data Source=MYCOMPUTER\INSTANCE_ON_SQL2008”连接到同一台机器上不同的 SQL Server 实例。当然,他们可以使用不同的版本。
    • 如果您不相信所有说 bcp.exe 无关的答案,这是一种超级简单的检查方法。只是临时将 bcp.exe 重命名为其他名称,然后尝试运行您的应用程序。
    【解决方案2】:

    来自 SqlBulkCopy 的 MSDN docs

    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。您应该会看到可验证与 2008 兼容的相对简单的 SQL。

    【讨论】:

      【解决方案3】:
      • 如果您的应用在没有安装任何 SQL Server 组件的不同服务器/PC 上运行它仍然可以工作(假设您有 .net 框架)
      • SqlBulkCopy 类调用 bcp.exe。完全不相关
      • 安装或不安装什么版本的 bcp.exe 并不重要
      • 您的应用程序对 SQLBulkCopy 的使用不受 SQL Server 版本的影响

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多