gpt4 book ai didi

sql - SQL Server中的BCP导致错误

转载 作者:行者123 更新时间:2023-12-02 10:42:37 26 4
gpt4 key购买 nike

所有,

在这里,我有一个简单的查询,该查询可以在任何创建了简单表的SQL Server机器上运行,然后尝试通过BCP将其内容导出到XML文件。您要做的就是用与您的计算机有关的值替换@ DatabaseName,@ filename,@ query。

当我运行查询1时,错误消息是

SQLState = S1000, NativeError = 0 Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file.



当我运行查询2或3时,错误消息是

bcp.exe: unknown option A usage: bcp.exe {dbtable | query} {in | out | queryout | format} datafile.



我正在从SQL Server Management Studio运行它。我真的需要解决方案,请帮忙。
DECLARE @cmd  As VARCHAR(8000)
use CP

IF EXISTS(SELECT * FROM dbo.Dummy) DROP TABLE dbo.Dummy

Declare @DatabaseName VARCHAR(200)
Declare @filename VARCHAR(200)
Declare @query As varchar(max)


set @DatabaseName = 'ALSCG-JPATHIL\SQLEXPRESS'
set @filename = 'C:\Users\jpathil\Desktop\sample.xml'
set @query = 'SELECT * FROM [CP].[dbo].[Dummy]'

CREATE TABLE Dummy (BCP_Sucks VARCHAR(200),);
INSERT INTO Dummy VALUES ('Jean');
INSERT INTO Dummy VALUES ('Derrick')



Declare @teststring VARCHAR(2000)

-- Query 1

--set @teststring = 'bcp.exe ' + '"' + @query + '" ' + 'queryout' + ' "' + @filename + '" ' + '-c -T -x -S ' + @DatabaseName
--Query 2

--set @teststring = 'bcp.exe ' + '"' + @query + '" ' + 'queryout' + ' "' + @filename + '" ' + '-c -T -x' + @DatabaseName
--Query 3

set @teststring = 'bcp.exe ' + '"' + @query + '" ' + 'queryout' + ' "' + @filename + '" ' + '-c -x' + @DatabaseName



SET @cmd = @teststring

EXEC xp_cmdshell @cmd;

最佳答案

In your previous related question我告诉过您1)使用PRINT并搜索语法错误。和2)搜索缺失的空格

这个

@filename + '" ' + '-c -x'  + @DatabaseName

导致
"C:\Users\jpathil\Desktop\sample.xml" -c -xALSCG-JPATHIL\SQLEXPRESS

一个问题是选项 -x后缺少空白。可能是,这是未知选项A的原因

服务器名称遵循选项 -S btw ...

这是一个有效的例子
提示请注意,当 C:\Users\...在SQL Server上下文中运行时, BCP指向您的本地计算机。
USE master;
GO
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
GO

CREATE TABLE dbo.Dummy (BCP_Sucks VARCHAR(200),);
INSERT INTO dbo.Dummy VALUES ('Jean');
INSERT INTO dbo.Dummy VALUES ('Derrick');

GO
DECLARE @DatabaseName VARCHAR(200)=@@SERVERNAME;
DECLARE @filename VARCHAR(200)= 'C:\Users\jpathil\Desktop\sample.xml';
DECLARE @query As varchar(max)='SELECT * FROM TestDb.dbo.Dummy FOR XML AUTO;';

DECLARE @teststring VARCHAR(2000)
SET @teststring = 'bcp.exe "' + @query + '" queryout "' + @filename + '" -w -T -S ' + @DatabaseName

PRINT @teststring;
EXEC xp_cmdshell @teststring;
GO
USE master;
DROP DATABASE TestDb;

关于sql - SQL Server中的BCP导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com