如何自动运行来自给定文件夹的所有SQL脚本的过程?执行SQL Server脚本
5
A
回答
10
1
您可以使用SQL Server附带的sqlcmd命令行工具运行SQL脚本文件。语法是这样的:
sqlcmd -i c:\MyScript.sql
因此,基本上,你只需要找到您的文件夹中的所有文件,依次通过他们,并执行SQLCMD为每一个,如上所示。
0
您还可以使用powershell来执行给定文件夹中的脚本。 http://sqlblogcasts.com/blogs/martinbell/archive/2009/07/30/Executing-all-.SQL-files-in-a-directory-with-Powershell.aspx 周杰伦
1
我创建了下面的脚本为我的项目之一:
SET NOCOUNT ON
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE
--Create the Folder- en filetables.
DECLARE @SQLFolders TABLE (SQLFolderName VARCHAR(MAX))
DECLARE @SQLFiles TABLE (SQLFileName VARCHAR(MAX))
DECLARE @MainFolder VARCHAR(MAX)
DECLARE @FileName VARCHAR(MAX)
DECLARE @FolderName VARCHAR(MAX)
DECLARE @SQLStatement VARCHAR(2000)
SET @MainFolder = 'C:\ProjectName\'
--Fill the foldertable and loop through them.
INSERT INTO @SQLFolders VALUES ('CreateScripts\')
INSERT INTO @SQLFolders VALUES ('ChangeScripts\')
DECLARE cFolders CURSOR LOCAL FOR
SELECT [SQLFolderName]
FROM @SQLFolders
OPEN cFolders
FETCH NEXT FROM cFolders INTO @FolderName
WHILE @@FETCH_STATUS = 0
BEGIN
--Fill the file-table and loop through.
SET @SQLStatement = 'dir /b "' + @MainFolder + @FolderName + '*.sql"'
INSERT INTO @SQLFiles
EXECUTE master.dbo.xp_cmdshell @SQLStatement
DECLARE cFiles CURSOR LOCAL FOR
SELECT DISTINCT [SQLFileName]
FROM @SQLFiles
WHERE [SQLFileName] IS NOT NULL AND
[SQLFileName] != 'NULL' AND
[SQLFileName] != 'File Not Found'
ORDER BY [SQLFileName]
OPEN cFiles
FETCH NEXT FROM cFiles INTO @FileName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLStatement = 'SQLCMD -d hantisdb -i' + @MainFolder + @FolderName + @FileName
EXECUTE master.dbo.xp_cmdshell @SQLStatement
FETCH NEXT FROM cFiles INTO @FileName
END
DELETE FROM @SQLFiles
CLOSE cFiles
DEALLOCATE cFiles
FETCH NEXT FROM cFolders INTO @FolderName
END
CLOSE cFolders
DEALLOCATE cFolders
GO
EXEC master.dbo.sp_configure 'xp_cmdshell', 0
RECONFIGURE
EXEC master.dbo.sp_configure 'show advanced options', 0
RECONFIGURE
SET NOCOUNT OFF
我使用它来重新创建我的数据库和一个全新的数据库每天启动。 请注意,它将以alfabetical顺序执行文件!
相关问题
- 1. 执行PowerShell脚本时出错SQL Server
- 2. SQL Server Management Studio - 执行其他脚本的脚本?
- 3. 如何在Sql Server 2008中执行sql脚本文件
- 4. 声明SQL Server SQL脚本中的执行顺序
- 5. 从powershell执行Sql脚本
- 6. SQL脚本执行控制
- 7. 执行SQL脚本值
- 8. 从shell脚本执行SQL
- 9. SQL Server事务复制 - 执行前后脚本
- 10. 如何在Sql Server 2005+中执行嵌套脚本
- 11. 如何使用SQL Server 2008脚本执行文件夹
- 12. 我的脚本不能执行DROP TABLE命令的SQL Server 2008
- 13. 我可以从Python脚本执行SQL Server DTS包吗?
- 14. SQL Server Management Studio中的“无法执行脚本”错误
- 15. Bash或PHP脚本在SQL Server上执行存储过程
- 16. 我的脚本无法执行alter database命令SQL Server 2008
- 17. 无法使用JTDS 1.3.1执行SQL Server脚本
- 18. 在.Net中,如何针对实例执行SQL Server脚本?
- 19. 执行脚本
- 20. 在powershell脚本中执行sql命令
- 21. 如何从url执行sql脚本?
- 22. 在Maven中循环执行SQL脚本
- 23. 内seed.rb执行SQL脚本Rails3中
- 24. 如何使用dbExpress执行SQL脚本?
- 25. SQL SMO执行批量TSQL脚本
- 26. 在批处理中执行SQL脚本
- 27. 如何从bash脚本中执行SQL?
- 28. 如何在heroku上执行.sql脚本?
- 29. 执行sql脚本时出错!
- 30. 不在SQL中执行的脚本
操作系统?脚本的数量?任何潜在的冲突或运行订单要求?你想多久运行一次?一些细节将有助于回答你的问题。 – 2010-08-19 15:28:27