如何自動運行來自給定文件夾的所有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. 從java執行sql server腳本
- 3. SQL Server Management Studio - 執行其他腳本的腳本?
- 4. 聲明SQL Server SQL腳本中的執行順序
- 5. 如何在Sql Server 2008中執行sql腳本文件
- 6. 從powershell執行Sql腳本
- 7. c#執行sql腳本
- 8. SQL腳本執行控制
- 9. 從shell腳本執行SQL
- 10. 我的腳本無法執行alter database命令SQL Server 2008
- 11. 從批處理文件執行SQL Server腳本
- 12. 在SQL Server 2008中執行大型腳本
- 13. 在.Net中,如何針對實例執行SQL Server腳本?
- 14. 我可以從Python腳本執行SQL Server DTS包嗎?
- 15. 無法使用JTDS 1.3.1執行SQL Server腳本
- 16. 如何在Sql Server 2005+中執行嵌套腳本
- 17. 在SQL Server 2008中未執行的數據庫腳本
- 18. Bash或PHP腳本在SQL Server上執行存儲過程
- 19. 如何使用SQL Server 2008腳本執行文件夾
- 20. SQL Server Management Studio中的「無法執行腳本」錯誤
- 21. SQL Server事務複製 - 執行前後腳本
- 22. 我的腳本不能執行DROP TABLE命令的SQL Server 2008
- 23. 從命令行執行SQL腳本
- 24. 運行R-腳本得到的SQL Server
- 25. SQL Server腳本塊編號和塊行
- 26. 執行腳本
- 27. 執行腳本
- 28. 執行腳本
- 29. 執行腳本
- 30. 執行腳本
操作系統?腳本的數量?任何潛在的衝突或運行訂單要求?你想多久運行一次?一些細節將有助於回答你的問題。 – 2010-08-19 15:28:27