我正在考虑使用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
答案 0 :(得分:2)
基于the comparison of BCP, BULK INSERT, OPENROWSET (infer Linked Server) here:
... bcp实用程序在进程外运行。要跨进程内存空间移动数据,bcp必须使用进程间数据封送。进程间数据封送是将方法调用的参数转换为字节流的过程。这会给处理器增加很大的负担。但是,因为bcp [both]解析数据并将[转换]数据转换为客户端进程中的本机存储格式,所以它们可以从SQL Server进程卸载解析和数据转换。
... bcp可能不是传输数据的最有效方法。你可能会更好:
INSERT
语句,以便根据链接服务器实例中公开的数据库中的记录填充表。除了可能更高效之外,您只需要设置链接服务器实例一次,而不是每次要移动数据时运行BCP来创建输出脚本。
请注意,链接服务器实例基于其他数据库上的用户,因此对其他数据库的权限基于该用户的权限。
答案 1 :(得分: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)
这应该从源服务器获取“viewname”的内容,将其放在临时文件中,然后将该文件插回到新服务器上的新数据库中。
通常,您会将这些数据行加载到一个新的临时登台表中,并在那里表单,使用T-SQL或其他方法将该数据插入到您的实际表中。
查看MSDN documentation on bcp in SQL Server 2000了解所有这些开关及其含义的详细信息。