我在远程服务器中执行BCP命令时遇到问题。在远程服务器中执行BCP命令
我在执行脚本文件的批处理文件中有以下命令。 脚本文件处理临时表并将临时表中的记录写入文件。
SQLCMD -SQA_Server236 -dtestdb -Usa -PPassword1 -i"D:\script\Writing to Files\Write to CSV.sql" -o"D:\script\script_logs.log"
--script文件包含...
declare @table NVARCHAR(255)
declare @filename VARCHAR(100)
set @filename='C:\TextFile\abcd.csv'
set @table ='##Indexes_Add'
IF OBJECT_ID('tempdb..#Indexes_Add') IS NOT NULL
BEGIN
DROP TABLE ##Indexes_Add
END
CREATE TABLE ##Indexes_Add
(
id int IDENTITY(1,1) PRIMARY KEY,
alter_command NVARCHAR(MAX),
successfully_readded BIT NULL,
)
insert into ##Indexes_Add select 'a',0
insert into ##Indexes_Add select 'a',0
SET NOCOUNT ON;
IF OBJECT_ID('tempdb..'[email protected]) IS NOT NULL
BEGIN
DECLARE
@sql NVARCHAR(MAX),
@cols NVARCHAR(MAX) = N'';
SELECT @cols += ',' + name
FROM tempdb.sys.columns
WHERE [object_id] = OBJECT_ID('tempdb..'[email protected])
ORDER BY column_id;
SELECT @cols = STUFF(@cols, 1, 1, '');
SET @sql = N'EXEC master..xp_cmdshell ''bcp "SELECT '''''
+ REPLACE(@cols, ',', ''''',''''') + ''''' UNION ALL SELECT '
+ 'RTRIM(' + REPLACE(@cols, ',', '),RTRIM(') + ') FROM '
+ 'tempdb.dbo.'[email protected] + '" queryout "' + @filename + '" -c -t, -SQA_Server236 -Usa -PPassword1''';
EXEC sp_executesql @sql;
print @sql
END
我problem-:
当我运行一个批处理文件上面的批处理命令,我给我的不是服务器等本地服务器名称为“QA_Server236”,我得到在我的系统中创建的文件“abcd.csv”,但是当我将服务器名称设置为“QA_Server236”时,该文件在远程机器即QA_Server236中创建。但我想要在我的系统中创建文件,如果给定的服务器是远程服务器说“QA_Server236”
任何人都可以帮助我解决这个问题。我没有得到任何方法来这样做。
请帮忙吗? – Axs