SQL Server Management Studio - 执行其他脚本的脚本?
问题描述:
所以我一直在寻找一种方法来开发一个脚本,该脚本将使用SQL Server Management Studio从我的项目文件夹中执行其他脚本,到目前为止,其他解决方案都无法工作。我试着写一个脚本,曾在它的sqlcommandline东西:SQL Server Management Studio - 执行其他脚本的脚本?
sqlcmd -S.\SQLExpress -imyScript.sql;
,并没有工作和使用@\path\to\script.sql
将不工作,要么使任何其他的想法我理解?或者我应该开始着手编写一个程序?在这种情况下,有人可以指出我的方向是正确的吗?
非常感谢您的帮助。
答
个人而言,我会考虑编写存储过程。 MSDN documentation是不错的,如果你快速搜索,网上有很多资源。
或者你可以做这样的事情做到这一点(你需要有权执行命令shell等):
CREATE TABLE ##SQLFiles (SQLFileName VARCHAR(2000))
GO
INSERT INTO ##SQLFiles
EXECUTE master.dbo.xp_cmdshell 'dir /b "C:\SQL Scripts\*.sql"'
GO
DECLARE cFiles CURSOR LOCAL FOR
SELECT DISTINCT [SQLFileName]
FROM ##SQLFiles
WHERE [SQLFileName] IS NOT NULL AND
[SQLFileName] != 'NULL'
ORDER BY [SQLFileName]
DECLARE @vFileName VARCHAR(200)
DECLARE @vSQLStmt VARCHAR(4000)
OPEN cFiles
FETCH NEXT FROM cFiles INTO @vFileName
WHILE @@FETCH_STATUS = 0
BEGIN
-- The following SET command must be on a single line or else an error will be generated.
-- It is split in this script for readability purposes.
SET @vSQLStmt = 'master.dbo.xp_cmdshell ''osql -S Server Name -U User Name -P Password
-d Database Name -i "C:\SQL Scripts\' + @vFileName + '"'''
EXECUTE (@vSQLStmt)
FETCH NEXT FROM cFiles INTO @vFileName
END
CLOSE cFiles
DEALLOCATE cFiles
GO
DROP TABLE ##SQLFiles
GO
嗯谢谢你,我想我会考虑开发程序,但我非常感谢您的协助。 – Jfabs 2013-04-05 14:30:39