我有一个存储过程(测试写入文件)
CREATE PROCEDURE dbo.TestFileWrite
AS
BEGIN
DECLARE @fso INT, @file INT, @hr INT;
DECLARE @filename NVARCHAR(255) = 'D:\SQL_Write_Test.txt';
DECLARE @content NVARCHAR(1000) = '这是一个写入权限测试。成功写入说明有权限。';
-- 创建 FileSystemObject
EXEC @hr = sp_OACreate 'Scripting.FileSystemObject', @fso OUT;
IF @hr <> 0
BEGIN
PRINT '创建 FSO 失败,错误码:' + CAST(@hr AS NVARCHAR);
RETURN;
END
-- 创建文本文件(覆盖模式,第二参数为 True)
EXEC @hr = sp_OAMethod @fso, 'CreateTextFile', @file OUT, @filename, 2, True;
IF @hr <> 0
BEGIN
PRINT '创建文件失败,错误码:' + CAST(@hr AS NVARCHAR);
EXEC sp_OADestroy @fso;
RETURN;
END
-- 写入固定内容
EXEC @hr = sp_OAMethod @file, 'WriteLine', NULL, @content;
IF @hr <> 0
BEGIN
PRINT '写入失败,错误码:' + CAST(@hr AS NVARCHAR);
END
-- 关闭文件和清理对象
EXEC sp_OAMethod @file, 'Close';
EXEC sp_OADestroy @file;
EXEC sp_OADestroy @fso;
PRINT '✅ 测试完成,请检查文件是否已创建:' + @filename;
END
我在服务器命令中使用存储过程调用命令,
运行也是正常,但是就是没有生成文件。
|