我想创建一个用户定义的函数/存储过程或另一个 SQL 机制,当传递一个文件名时,它会将文件内容读入一个变量以供以后处理。该机制必须在事务中工作。
我的计划是使用用户定义的函数,但是 OPENROWSET 函数不允许我将变量作为文件名传递,因此我需要在“sp_executesql”语句中执行它,并且该函数变得不确定。
我可以使用任何解决方法来解决非确定性功能吗?
我想创建一个用户定义的函数/存储过程或另一个 SQL 机制,当传递一个文件名时,它会将文件内容读入一个变量以供以后处理。该机制必须在事务中工作。
我的计划是使用用户定义的函数,但是 OPENROWSET 函数不允许我将变量作为文件名传递,因此我需要在“sp_executesql”语句中执行它,并且该函数变得不确定。
我可以使用任何解决方法来解决非确定性功能吗?
CLR 选项将为您提供您想要的东西(请参阅@Dewfy 的评论),但bulk insert
如果您的数据允许,另一种选择是执行 a 。它也不是可扩展的,多个用户同时执行此操作的问题,但也许您的情况允许这样做?
是的,您可以使用 SQL Server 从开发人员提供的 DLL 调用的所谓“CLR 函数”函数。请参阅http://technet.microsoft.com/en-us/library/ms189876.aspx上的详细信息
但请注意,从服务器端处理文件不是具有重大安全问题的可扩展解决方案。