我想在SSMS中针对SQL Azure DB执行多个SQL(* .sql)TSQL脚本文件。我碰巧使用SSMS 2008 R2如何在SSMS中针对SQL Azure运行多个SQL脚本?
的代码,我想在一个SSMS查询窗口来执行,链接到相关的数据库实例,是从以前的SO问题有所回升,为:
/*
execute a list of .sql files against the server and DB specified
*/
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @DBServerName VARCHAR(100) = 'DBServerName '
DECLARE @DBName VARCHAR(100) = 'DBName'
DECLARE @FilePath VARCHAR(200) = 'c:\temp\scripts'
/*
create a holder for all filenames to be executed
*/
DECLARE @FileList TABLE (Files NVARCHAR(MAX))
INSERT INTO @FileList VALUES ('script1.Sql')
INSERT INTO @FileList VALUES ('script2.Sql')
INSERT INTO @FileList VALUES ('script3.Sql')
WHILE (SELECT COUNT(Files) FROM @FileList) > 0
BEGIN
/*
execute each file one at a time
*/
DECLARE @FileName NVARCHAR(MAX) = (SELECT TOP(1) Files FROM @FileList)
DECLARE @command VARCHAR(500) = 'sqlcmd -S ' + @DBServerName + ' -d ' + @DBName + ' -i "' + @FilePath + @Filename +'"'
EXEC xp_cmdshell @command
PRINT 'EXECUTED: ' + @FileName
DELETE FROM @FileList WHERE Files = @FileName
END
COMMIT TRAN
不幸的是,SQL Azure不支持“xp_cmdshell”。
如何为Azure SQL实例执行多个SQL脚本?
在此先感谢。
P.S我知道如何能够打开SSMS
您不能存储或托管的机器访问文件的SQL数据库。所以试图在服务器端做到这一点是行不通的。您需要从客户端运行此操作,例如使用PowerShell遍历文件并使用sqlcmd执行它们。 – 2015-03-31 23:42:23
@JanEngelsberg,谢谢你。我试图在安装了SSMS的客户端电脑上运行此操作,并从中访问并查询我的SQL Azure实例。我希望我可以运行一个调用其他脚本的SQL脚本。我知道我可以打开每个脚本文件并单独运行,但我希望能够使这个过程更高效一些。 – SamJolly 2015-03-31 23:51:03