我必须从sql server表中的一些数据创建一个文本文件。我已经为此创建了查询。
创建文件后,我还必须创建一个触发器文件或另一个文本文件,其中包含一些信息,如行数,文件日期,名称等。除此之外,此触发器文件必须具有文件大小信息。< / p>
我想我发现我将创建一个触发器表并继续使用其他信息更新它,例如行数,文件名,日期,因为我在数据收集查询中收集数据。但我很困惑如何从我的查询中获取触发器文件的文件大小。
我很感激任何想法。
答案 0 :(得分:1)
我个人会使用Powershell来执行需要与Windows交互的任务,但它不是很有趣。
我能想到两种基于SQL的解决方案:
<强> xp_cmdshell的强>
exec xp_cmdshell 'dir c:\temp\test.txt'
Output
Volume in drive C is System
Volume Serial Number is A227-BF7F
NULL
Directory of c:\temp
NULL
26/04/2013 10:52 AM 20 test.txt
1 File(s) 20 bytes
0 Dir(s) 214,210,105,344 bytes free
NULL
但有几个缺点:
xp_cmdshell默认关闭。 (Msg 15281,Level 16,State 1,Procedure xp_cmdshell,Line 1 SQL Server阻止访问组件“xp_cmdshell”的过程“sys.xp_cmdshell”,因为此组件已作为此服务器的安全配置的一部分关闭。系统管理员可以使用sp_configure启用“xp_cmdshell”。有关启用“xp_cmdshell”的详细信息,请参阅SQL Server联机丛书中的“表面区域配置”。)
您需要解析输出。
<强> OPENROWSET 强>
select datalength(bulkcolumn) from openrowset(bulk 'c:\temp\test.txt', single_clob) a
假设它是文本文件而您并不真正需要操作系统报告的确切数字,您只需计算文本文件中包含的字节数。
希望能给你一些想法。
答案 1 :(得分:0)
感谢所有的投入。我最终创建了一个.net可执行文件,它将读取文件大小并为此更新数据库。