我想创建一个SQL Server 2008脚本,一次性恢复文件夹中的多个备份文件。该脚本是针对一个文件制作的。我想在循环中执行此脚本并加载该目录中的所有文件。我该如何以简单的方式做到这一点。
这是在文件夹中获取文件名的代码 -
EXEC xp_dirtree N'C:\', 10, 1
这就是我的备份sql的样子 -
DECLARE some variables
DECLARE @sql varchar(max)
SET the variables
SET @sql = dynamic sql based on above variables.
exec sp_executesql @sql
如何制作一个简单的循环来运行我的代码?我应该将我的代码转换为函数还是SP?
感谢。
答案 0 :(得分:1)
您可以创建临时表并将文件列表存储在那里:
CREATE TABLE #FILES(
Name varchar(200)
, depth numeric
, IsFile numeric
)
并插入:
INSERT INTO #FILES
EXEC xp_dirtree N'C:\', 10, 1
所以你可以使用游标循环:
DECLARE @FILENAME AS VARCHAR(200)
DECLARE C CURSOR FOR
SELECT Name
FROM #FILES
WHERE IsFile = 1
OPEN C
FETCH NEXT FROM C INTO @FILENAME
WHILE @@FETCH_STATUS = 0
BEGIN
DO YOUR STUFF BASED ON FILE
FETCH NEXT FROM C INTO @FILENAME
END
CLOSE C
DEALLOCATE C
这样的事情应该可以解决问题