如何将数据从另一个数据库(另一个服务器中)的视图导入到 SQL Server 2000 中的表中?
-
21-09-2019 - |
题
我正在考虑使用 bcp 命令来解决用户身份验证,但是 bcp 命令是否能够导入到我的数据库中的表中?顺便说一句,我使用的是SQL Server 2000环境。
这是我到目前为止得到的代码:
set @command ='bcp“选择vwtest。 -s myServer sql -umyuser -puser1'
EXEC master.dbo.xp_cmdshell @Command
解决方案
基于 BCP、BULK INSERT、OPENROWSET(推断链接服务器)的比较在这里:
...bcp 实用程序在进程外运行。要跨进程内存空间移动数据,bcp 必须使用进程间数据封送处理。进程间数据封送是将方法调用的参数转换为字节流的过程。这会显着增加处理器的负载。但是,由于 bcp [两者] 都会在客户端进程中解析数据并将数据[转换]为本机存储格式,因此它们可以从 SQL Server 进程中卸载解析和数据转换。
...bcp 可能不是传输数据的最有效方式。您可能最好这样做:
- 创建一个 链接服务器实例 到另一个数据库
- 使用
INSERT
语句,以便根据链接服务器实例中公开的数据库中的记录填充表。
除了可能更高效之外,您只需设置一次链接服务器实例,而不是每次想要移动数据时运行 BCP 来创建输出脚本。
请注意,链接服务器实例基于另一个数据库上的用户,因此对另一个数据库的权限基于该用户的权限。
其他提示
<强> SURE !! 强>
源的机器上使用此命令(通过它为您的需求):
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或其它装置将这些数据插入到实际的表。
查看 MSDN文档在SQL BCP服务器2000 以对所有这些开关的细节和它们的含义。