当用户是WINDOWS身份验证时,BCP命令不用输入-U和-P,只需输入-T即可

今天,用bcp命令:

EXEC master..xp_cmdshell N'bcp "SELECT ''数据库ID'',''数据库名称'',''对象Id'',''表名'',''查询语句'',''总消耗CPU 时间(ms)'',''执行次数'',''平均消耗CPU 时间(ms)'',''最后一次执行时间'',''最小执行时间(ms)]'',''最大执行时间(ms)''  UNION ALL SELECT CAST(dbid AS NVARCHAR(100)),dbname,CAST(ObjectId AS NVARCHAR(100)) ,ObjectName ,SelectStatement ,CAST(total_worker_time AS NVARCHAR(100)) , CAST(execution_count AS NVARCHAR(100)) ,CAST( avg_elasped_time AS NVARCHAR(100)) ,CAST( last_execution_time AS NVARCHAR(100)),CAST(min_worker_time AS NVARCHAR(100)) ,CAST( max_worker_time AS NVARCHAR(100))  FROM dba.dbo.bdd_temp_find_top_select_cpu" queryout d:\top_select_cpu.xls -c  -S"ZB-BAIDD-PC" -U"SA" -P"BAIDANDAN' 

时,报如下错误:


出错原因:

该用户只允许‘WINDOWS身份验证’,不允许‘SQL SERVER身份验证’。

解决办法:

不用输入用户名和密码(-U和-P),只需输入-T(windows信任连接)即可

如:

EXEC master..xp_cmdshell N'bcp "SELECT ''数据库ID'',''数据库名称'',''对象Id'',''表名'',''查询语句'',''总消耗CPU 时间(ms)'',''执行次数'',''平均消耗CPU 时间(ms)'',''最后一次执行时间'',''最小执行时间(ms)]'',''最大执行时间(ms)''  UNION ALL SELECT CAST(dbid AS NVARCHAR(100)),dbname,CAST(ObjectId AS NVARCHAR(100)) ,ObjectName ,SelectStatement ,CAST(total_worker_time AS NVARCHAR(100)) , CAST(execution_count AS NVARCHAR(100)) ,CAST( avg_elasped_time AS NVARCHAR(100)) ,CAST( last_execution_time AS NVARCHAR(100)),CAST(min_worker_time AS NVARCHAR(100)) ,CAST( max_worker_time AS NVARCHAR(100))  FROM dba.dbo.bdd_temp_find_top_select_cpu" queryout d:\top_select_cpu.xls -c  -S"ZB-BAIDD-PC"  -T

你可能感兴趣的:(当用户是WINDOWS身份验证时,BCP命令不用输入-U和-P,只需输入-T即可)