SQLCMD、BCP - 存储过程不存在

SQLCMD, BCP - stored procedures don't exist

我正在尝试使用 sqlcmd 获得一个 'Hello World' 作为概念证明,但我遇到了困难:

命令:

 sqlcmd 'cmd.exe'

错误:

Could not find stored procedure 'sqlcmd'.

我遇到了与 BCP 类似的问题:

 bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" 

Could not find stored procedure 'bcp'.

这是一台 SQL Server 2014 机器。这是怎么回事,我该如何解决?

正如@marc_s 已经指出的那样,SQLCMDBCP 是外部命令行工具。这些不能通过在 SQL 服务器中以 bcp ...sqlcmd ... 开头来调用。

如果你想从SQL服务器运行这些命令,你需要在VARCHAR中形成命令并通过使用[=22=执行命令] 存储过程。调用此过程会将命令传递给操作系统以执行。 运行 此命令将生成一个结果集,其中每一行都是 运行 宁此命令的输出行。

首先必须启用对 master.sys.xp_cmdshell 过程的访问。对于您的 SQL 服务器安装,这只需完成一次。您可以使用此脚本来执行此操作:

EXEC sp_configure 'show advanced options', 1 
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1 
GO
RECONFIGURE
GO

之后就可以使用这个存储过程了。我将根据 BCP 的使用给出一个示例。这会将你所有的 table 信息(从 INFORMATION_SCHEMA.TABLES)输出到 C:\Temp\information_schema.txt.

DECLARE @stmt VARCHAR(8000);
SET @stmt='BCP "SELECT*FROM INFORMATION_SCHEMA.TABLES" QUERYOUT "C:\Temp\information_schema.txt" -c -T -S ' + @@SERVERNAME + ' -d ' + DB_NAME();
EXEC master.sys.xp_cmdshell @stmt;