2011-09-09 35 views
0

我想从表写入输出文本文件。我没有收到任何错误,但文件没有创建。使用tsql从表中写入文本

EXEC master..xp_cmdshell 'bcp "SELECT * FROM DB.dbo.table1" queryout "C:\employee.txt" -T -Sservername -U user111 -P pwd -c -t,' 

没有文件创建,我不知道为什么。任何人都可以帮忙吗?

,我没有得到的错误,而不是我得到以下信息:

usage: bcp {dbtable | query} {in | out | queryout | format} datafile 
[-m maxerrors]   [-f formatfile]   [-e errfile] 
[-n native type]   [-c character type]  [-w wide character type] 
[-N keep non-text native] [-V file format version] [-q quoted identifier] 
    [-C code page specifier] [-t field terminator] [-r row terminator] 



[-i inputfile]   [-o outfile]    [-a packetsize] 

[-S server name]   [-U username]   [-P password] 
[-T trusted connection] [-v version]    [-R regional enable] 
[-k keep null values]  [-E keep identity values] 
    NULL 

我运行它在服务器A,但在数据库服务器B等服务器AI使用SQL Server Management Studio中,给服务器B详细信息登录。之后,我写了上面提到的查询。所以文件将在哪个服务器上形成?

+0

这实际上对我来说工作,尽管最后明显的逗号和你指定'T'并传入用户名和密码的事实。你在什么版本上? –

+0

我已经删除了逗号,最后还删除了用户名和密码。但仍然没有运气 – CPDS

回答

0

查询是正确的 -

EXEC master..xp_cmdshell 'bcp "SELECT * FROM DB.dbo.table1" queryout "C:\employee.txt" 

-Sservername -U user111 -P PWD -c -t,”

而在SQL Server Management Studio中键入我按下输入queryout经过这么声明“C:\ employee.txt”-Sservername -U user111 -P pwd -c -t,'即将进入下一行。 因为这我没有得到任何错误或

0

即使在用户名和密码之后有或没有空格的情况下都可以使用。你有写访问权限在服务器上的C:\?如果你还使用-T,你需要用户名还是通过?

+0

我在服务器A上运行它,但数据库在服务器B上。所以在服务器A上,我使用SQL SERVER管理工作室并给服务器B的详细信息登录。之后,我写了上面提到的查询。所以文件将在哪个服务器上形成? – CPDS

+0

在服务器上执行语句,服务器A – Mike

+0

查询正确 - EXEC master..xp_cmdshell'bcp“SELECT * FROM DB.dbo.table1”queryout“C:\ employee.txt” -Sservername -U user111 -P pwd -c -t,' 在SQL SERVER MANAGEMENT studio中输入时我在查询输出后按回车,因此语句“C:\ employee.txt”-Sservername -U user111 -P pwd -c -t'进入下一行。 因为这我没有得到任何错误或输出文件。 – CPDS

0

MSDN

安全注意

BCP实用程序使用集成安全性连接到SQL Server使用受信任的连接,使用-T选项(受信任的连接)instead of the user name密码组合。