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 已经指出的那样,SQLCMD
和BCP
是外部命令行工具。这些不能通过在 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;
我正在尝试使用 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 已经指出的那样,SQLCMD
和BCP
是外部命令行工具。这些不能通过在 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;