2

我正在考虑使用 bcp 命令来解决用户身份验证问题,但是 bcp 命令是否能够导入到我的数据库中的表中?顺便说一句,我使用的是 SQL Server 2000 环境。

这是我到目前为止得到的代码:

SET @Command = 'bcp "SELECT vwTest.* from [myserver\sql].test.dbo.vwTest" queryout dbo.Test -C ACP -c -r \n -t ";" -S myserver\sql -Umyuser -Puser1'

EXEC master.dbo.xp_cmdshell @Command

4

2 回答 2

2

基于BCP,BULK INSERT,OPENROWSET(推断链接服务器)的比较

... bcp 实用程序在进程外运行。要跨进程内存空间移动数据,bcp 必须使用进程间数据封送处理。进程间数据封送处理是将方法调用的参数转换为字节流的过程。这会显着增加处理器的负载。但是,由于 bcp [both] 在客户端进程中解析数据并将数据 [转换] 为 [the] 本机存储格式,因此它们可以从 SQL Server 进程中卸载解析和数据转换。

...bcp 可能不是最有效的数据传输方式。你可能会更好:

  1. 创建到另一个数据库的链接服务器实例
  2. 使用INSERT语句,以便根据链接服务器实例中公开的数据库中的记录填充表。

除了可能更高效之外,您只需设置一次链接服务器实例,而不是每次要移动数据时运行 BCP 来创建输出脚本。

请注意,链接服务器实例基于另一个数据库上的用户,因此对另一个数据库的权限基于该用户的权限。

于 2010-02-17T17:29:20.457 回答
1

当然 !!

在源计算机上使用此命令(根据您的需要采用它):

bcp database.dbo.viewname out c:\temp\viewname.bcp

然后使用以下命令将数据导入目标系统:

bcp newdatabase.dbo.importtable in c:\temp\viewname.bcp 
    -c -S(servername) -U(username) -P(password)

那应该从源服务器中获取“视图名称”的内容,将其放入临时文件中,然后将该文件插入新服务器上的新数据库中。

通常,您会将这些数据行加载到一个新的临时临时表中,并在那里形成,使用 T-SQL 或其他方式将该数据插入到您的实际表中。

查看有关 SQL Server 2000中 bcp 的 MSDN 文档,了解所有这些开关及其含义的详细信息。

于 2010-02-17T17:12:49.333 回答