SQL Server 2008中 - 执行批处理作业和批量插入在T-SQL
问题描述:
我面临着一个有趣的问题,我甚至不知道这是否是可能的:SQL Server 2008中 - 执行批处理作业和批量插入在T-SQL
我需要在SQL Server 2008中创建一个存储过程在执行时执行以下操作:
执行批处理文件 - 位于SQL Server上(即C:\ Mybatchfile.bat) - 这个批处理文件将在SQL Server上输出一个文本文件到一个目录(即C:\ Output \ BatchFileOutput1.txt)。
Bulk将文本文件的内容插入到我的数据库中的表中。
从服务器删除文本文件。
在我真的开始挖掘如何实现这一目标之前,这甚至有可能吗?
在此先感谢
答
您应该能够把所有这一切都在一个过程:
1)执行批处理文件中使用:xp_cmdshell (Transact-SQL)。但是,许多人认为这是一种安全风险,并且可能不会在数据库中启用对其的访问。您可以使用CLR来执行批处理文件,这将更安全。
2)您可以使用bcp Utility将行复制到表中。 3)您将使用#1的方法删除文件。从xp_cmdshell发出删除命令,这是一个安全风险。或者在你传递文件名的地方创建一个CLR来删除文件。我不会让路径通过,硬代码,所以只有在你的“特殊”目录中的文件可以删除,而不是C:\等。
答
或者你可以在SSIS pacakge中做到这一点,然后有一个工作来执行包,而不是在存储过程中执行。或者proc可以让代码执行SSIS封装。