我想对数据库做一个安全配置方面的检查,将检查结果输出到同一个文本文件中。你如有如下两个sql语句--4.6 查看服务器角色信息授权
exec sp_helpsrvrolemember4.7 强密码策略检查
select name,is_policy_checked,is_expiration_checked from master.sys.sql_logins where 
name in(select name from master.sys.syslogins where name not like '%\%' and name not like '%#%')我想把他们的查询结果输出到同一个文本文件中,该如何写sql语句?bcp能否实现?请高手支招。

解决方案 »

  1.   

    try.
    exec   master..xp_cmdshell   'bcp   数据库名..test_tb   out   d:\aa.txt     -c   -q   -t,   -S服务器名   -Usa   -P密码 '
      

  2.   

    1 sqlserver 用个变量把两个结果叠加输出
    2 参考一下sqlserver操作txt文件
    http://blog.csdn.net/zjcxc/archive/2005/05/30/384496.aspx
    3 系统合并txt参数 需要dos下的wscript支持
      

  3.   

    select *  
    from OPENROWSET('SQLOLEDB','SERVER=.;UID=sa;PWD=','set fmtonly off;exec csdn_test.dbo.sp_helpsrvrolemember') AS a 
    你可以这样查询,至于 结果保存那就方便了
      

  4.   

    如果调用BCP的话可以这样exec master..xp_cmdshell 
    'bcp "select * from OPENROWSET(''SQLOLEDB'',''SERVER=.;UID=sa;PWD='',''set fmtonly off;exec csdn_test.dbo.sp_helpsrvrolemember'') AS a " queryout c:\Authors.txt -c -S. -Usa -P'output                                                                                                                                                                                                                                                          
    ------------------------------------------------------------------------------------------------------------ 
    NULL
    开始复制...
    NULL
    已复制了 2 行。
    数据包的大小(字节): 4096
    时钟时间(毫秒): 共     10
    NULL(所影响的行数为 7 行)
      

  5.   

    换成信任连接SELECT *   
    FROM openrowset('sqloledb','Trusted_Connection=yes','set fmtonly off;exec csdn_test..sp_helpsrvrolemember ')
      

  6.   

    想所有内容放在一起,可用批处理bat作到
      

  7.   

    谢谢大家的回答!我想知道能否通过bcp把几个不同的查询结果导出到同一个文件中?
      

  8.   

    1.bcp输出文件是覆盖的
    2.bat中写bcp得到文件后用copy附加
      

  9.   

    看来只能是bcp分别输出到多个文件,然后copy到同一个文件中了。结贴给分。