你需要做的第一件事是确定xp_cmdshell是可用的。你可以选择下面两种方法中的一种来实现。 1.你可以使用sp_configure并执行下面的脚本。 exec master.dbo.sp_configure 'show advanced options', 1reconfigureexec master.dbo.sp_configure 'xp_cmdshell', 1r
你需要做的第一件事是确定xp_cmdshell是可用的。你可以选择下面两种方法中的一种来实现。
1.你可以使用sp_configure并执行下面的脚本。
exec master.dbo.sp_configure 'show advanced options', 1reconfigureexec master.dbo.sp_configure 'xp_cmdshell', 1reconfigure
2.你可以使用surface area configuration工具。
选择功能中的surface area configuration并检查enable xp_cmdshell检验栏。
图一
现在既然你已经使xp_cmdshell可用,那么你可以准备输出你的文件。
下面是一个示例命令,它将把系统文件表的结果输出到以逗号分割的文件bcptest.txt中。只需复制并把它粘贴到一个查询窗口中且执行这个查询。
exec xp_cmdshell 'bcp select * from sysfiles queryout c:bcptest.txt -t -c -t,'
注:bcp是一个命令行实用工具,xp_cmdshell要求只能在一个sql批处理内使用。
当在master数据库中执行上面的命令时将得到这个输出结果。
图二
使用的参数是:
l queryout选项允许你指定一个查询来输出。这可以像我们使用的查询那样简单也可以像你需要的那样复杂。你也可以创建一个视图并从视图中选择数据。
l file name是存储结果的,它位于queryout选项之后。
l -t参数指定bcp实用工具通过集成安全使用一个可信连接来连接到sql server。如果你想使用一个sql server登陆,那么你可以使用-p(密码)和-u(用户)。
l -c指定将用于各个字段的字符数据类型。
l -t参数允许你指定一个字段定界符。在-t之后的字符将用于隔开数据字段。如果-t被删除了,,那么tab将用于默认定界符。
另一个你可能需要使用的参数是-s,你可以用它来指定服务器名称。如果你有一个指定的实例,那么你需要使用这个参数。下面是一个连接到服务器develop 和实例 dev1的例子。
exec xp_cmdshell 'bcp select name, type_desc, create_date from sys.objects queryout c:bcptest2.txt -t -sdevelopdev1 -c -t,'exec xp_cmdshell 'bcp select name, type_desc, create_date from sys.objects queryout c:bcptest2.txt -t -sdevelopdev1 -c -t,'
你也必须知道使用参数-t和-t的实例是不一样的,所以要保证你在实例中使用正确的参数。
