SQLCMD、BCP - 存储过程不存在

rlb*_*usa 1 sql-server bcp sqlcmd sql-server-2014

我正在尝试使用“Hello World”作为概念证明,sqlcmd但我很难:

在此处输入图片说明

命令:

 sqlcmd 'cmd.exe'
Run Code Online (Sandbox Code Playgroud)

错误:

找不到存储过程“sqlcmd”。

我在 BCP 上遇到了类似的问题:

 bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" 
Run Code Online (Sandbox Code Playgroud)

找不到存储过程“bcp”。

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

TT.*_*TT. 5

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

如果要从 SQL Server 运行这些命令,则需要在 a 中形成命令VARCHAR并通过使用master.sys.xp_cmdshell存储过程执行命令。调用此过程会将命令传递给操作系统执行。运行此命令将产生一个结果集,其中每一行都是运行此命令的输出的一行。

必须master.sys.xp_cmdshell首先启用对程序的访问。对于 SQL Server 安装,只需执行一次此操作。你可以使用这个脚本来做到这一点:

EXEC sp_configure 'show advanced options', 1 
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1 
GO
RECONFIGURE
GO
Run Code Online (Sandbox Code Playgroud)

之后就可以使用这个存储过程了。我将给出一个基于使用的例子BCP。这会将您的所有表信息(从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;
Run Code Online (Sandbox Code Playgroud)