如何使用BCP将数据写入远程SQL Server?

5

我有一个远程 SQL Server,使用主机名连接。

BCP 建议使用

bcp DBName.dbo.tablename in C:\test\yourfile.txt -c -T -t

然而,当我尝试这样做时,它无法连接到DBName,因为那不是一个有效的别名。我得到本机错误2。

我如何运行BCP并指定一个互联网/网络地址进行连接,而不是MSSQL服务器名称?

2个回答

10
如何在运行BCP时指定要连接的Internet/网络地址,而不是MSSQL服务器名称?
您可以使用IP地址(这里仅为127.0.0.1)而不是服务器名称。
bcp DBName.dbo.tablename in "C:\test\yourfile.txt" -c -T -t -S"127.0.0.1\instance"
如果您真的只想使用IP\端口,则使用由逗号分隔的IP地址和端口
bcp DBName.dbo.tablename in "C:\test\yourfile.txt" -c -T -t -S"127.0.0.1,60905"
当然,在这种情况下,您需要知道实例正在使用的端口,并且您的实例应该设置为使用固定端口。

问题:输出文件“yourfile.txt”是否会进入由标志-S标识的服务器的C:驱动器?还是在运行bcp的服务器上?因此,如果我正在运行thedatabase.db.myhost.com,那么C:\是在我的计算机上吗?还是在thedatabase.db.myhost.com上?谢谢。 - arcee123
1
@arcee123。输出文件保存在运行bcp的服务器上。实际上,无法保存在由标志-S标识的服务器上,因为该服务器被授予的唯一访问权限是数据库访问权限,而不是访问Windows(或其他)环境的权限。 - gordon613

2
DBName是数据库的名称,您需要使用-S选项来提供服务器(或服务器\实例)名称。
来自 MSDN
-S server_name [\ instance_name]指定要连接的SQL Server实例。 如果未指定服务器,则bcp实用程序将连接到本地计算机上的SQL Server默认实例。 当从网络上的远程计算机或本地命名实例运行bcp命令时,需要此选项。 要连接到服务器上的SQL Server默认实例,请仅指定server_name。 要连接到SQL Server的命名实例,请指定server_name \ instance_name。

OP明确表示不要使用服务器的名称。 - Jasper Schellingerhout
那个服务器名称是服务器的 DNS 名称,而不是数据库名称或实例名称。我猜 OP 把事情搞混了。 - James Z
2
我同意,他们更可能是指实例名称。在这种情况下,可以使用未记录的服务器规范 SERVERNAME,port - Jasper Schellingerhout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接