我曾经使用下面列出的代码从 SQL Server 写入文本文件:
DECLARE @FS INT --File System Object
DECLARE @OLEResult INT --Result message/code
DECLARE @FileID INT --Pointer to file
--Create file system object (OLE Object)
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject.Failed'
-----OPEN FILE-----
EXECUTE @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 8, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile.Failed'
看来 sql server 2008 r2 不再支持此功能。我应该如何导出到 sql server 2008 r2 中的文本文件?
声明不再支持该功能的链接: http://social.msdn.microsoft.com/Forums/en/transactsql/thread/f8512bec-915c-44a2-ba9d-e679f98ba313
答案1
这篇文章中提到的弃用是 SQL DMO(已被替换为SQL 状态管理从 SQL Server 2005 开始)。但是,您的代码不使用 SQL DMO 对象,因此您确实找错了方向。您链接到的帖子恰好使用 sp_OA* procs 来创建 SQL DMO 对象的实例。
您需要Ole Automation Procedures
在 SQL 实例中打开该选项。出于安全考虑,默认情况下该选项处于关闭状态。使用 sp_OA* procs 时需要此选项。
这应该可以帮你解决。
sp_configure 'show advanced options',1
GO
reconfigure
GO
sp_configure 'Ole Automation Procedures',1
GO
reconfigure
GO