【问题标题】:How to use BCP on a hosted SQL Server/IIS environment? What is an alternative to BCP如何在托管的 SQL Server/IIS 环境中使用 BCP?什么是 BCP 的替代品
【发布时间】:2011-12-09 13:06:30
【问题描述】:

我有一个用 ASP 构建的 Web 应用程序,最初托管在我自己的本地服务器上 - Win 2008、IIS 7.0、SQL Server 2008。

然后我为网站 + 数据库购买了一个折扣 ASP.Net 托管帐户。

Web 应用程序从网站根目录下的文件夹中获取一个文件,然后批量插入到数据库中的记录中。在本地开发盒上一切正常。

当数据库 + 网站移至 DiscountASP.Net 托管帐户时,BULK INSERT 不起作用,DiscountASP.Net 告诉我们不允许 BULK INSERT,因为托管数据库服务器是共享服务器。

这种情况的解决方法是什么?他们表示我们可以使用单独的 INSERT。

有没有更好的解决方案?是否有人遇到过类似的问题并有一些我们可以重复使用的解决方案? (而不是重新发明轮子)。

感谢您查找我的问题。

【问题讨论】:

    标签: sql-server shared-hosting bulkinsert bcp file-import


    【解决方案1】:

    您必须使用 .net 中的 SQLBulkCopy 或发送 XML 以在 SQL 代码中进行解析

    【讨论】:

    • 我得到的源文件是一个平面文件,带有列和行分隔符,网页代码是 Classic ASP。
    • 附带说明 DiscountASP.Net 确实允许在 SQL Server 中使用 .Net 代码。有什么想法吗?
    • @Moiz Tankiwala:除非您可以调用 Web 服务等,否则您在访问 SQL Server 之外的资源时会遇到类似的问题。但我希望它们允许的 CLR 受到限制,否则您可能会干扰其他客户端数据库
    【解决方案2】:

    经过一番尝试,我自己找到了解决方案。以下是解决步骤(由于客户机密,我不能分享代码):

    1. 我使用 Scripting.FileSystemObject 服务器对象从 ASP 代码中读取了 Web 服务器上文件中的所有文本。

    2. 我将文件的整个文本作为变量传递给存储过程 (SQL Server 2008)。参数的数据类型必须是“adLongVarChar”Refer the data type table here(如果无法识别枚举,就像我的情况一样,我使用值 201 而不是枚举)。

    3. 在存储过程中编写 SQL 代码,将字符串解析为行,然后进一步将每一行解析为列值。

    希望我的解决方案的伪代码对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-19
      • 2021-12-05
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多