【发布时间】:2016-10-19 10:37:56
【问题描述】:
我正在尝试使用可以将输入传递到的存储过程使用 Transact-SQL 写入文件。但是,每次我在 SQL Server 2012 中运行命令时,它都会显示 Command(s) completed successfully.,但我导航到文本文件,但在那里看不到任何文本。知道可能出了什么问题吗?
我的代码:
-- 授予 OLE 自动化权限 -- sp_configure '显示高级选项', 1; 走 重新配置; 走 sp_configure 'Ole 自动化程序', 1; 走 重新配置; 走 删除过程 WriteToGSQL; -- 封装实际写入文本文件的特定代码 -- 设置 ANSI_NULLS ON 走 设置 QUOTED_IDENTIFIER ON 走 创建过程 [dbo].[WriteToGSQL] @Path VARCHAR(2000), @Text VARCHAR(2000) 作为 开始 声明@Auto INT 声明 @FileID INT 执行 sp_OACreate 'Scripting.FileSystemObject', @Auto OUT 执行 sp_OAMethod @Auto, 'OpenTextFile', @FileID OUT, @Path, 8, 1 执行 sp_OAMethod @FileID, 'WriteLine', Null, @Text 执行 sp_OADestroy @FileID 执行 sp_OADestroy @Auto 结尾 声明 @File VARCHAR(2000); 声明 @Txt VARCHAR(2000); SET @File = 'C:\xxxxxxxx\xxxx\test.txt'; SET @Txt = '成功了吗?'; 执行 WriteToGSQL @File, @Txt;【问题讨论】:
-
您没有检查对
sp_OACreate和sp_OAMethod的任何调用的返回值,因此无法查看是否有任何问题。将返回值与sp_OAGetErrorInfo结合使用。有关示例,请参阅 MSDN。 -
看起来明显“错误”的一件事是您没有在文本文件上调用
Close。只需调用sp_OADestroy即可摆脱对象,并可能阻止流刷新其内容。 (我没有实际使用它的经验,所以这是猜测。) -
@JeroenMostert 感谢您的回复。抱歉,我是 TSQL 新手,所以我对 sp_OA 功能不是很熟悉。我查看了 MSDN 示例,但没有运气,您能告诉我您的意思吗?
标签: sql-server tsql text-files file-writing