Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure sql database 如何在SSM中针对SQL Azure运行多个SQL脚本?_Azure Sql Database - Fatal编程技术网

Azure sql database 如何在SSM中针对SQL Azure运行多个SQL脚本?

Azure sql database 如何在SSM中针对SQL Azure运行多个SQL脚本?,azure-sql-database,Azure Sql Database,我想在SSM中针对SQL Azure DB执行多个SQL(*.SQL)TSQL脚本文件。我碰巧正在使用SSMS 2008 R2 我试图在SSMS查询窗口中执行的代码(链接到相关DB实例)是从前面的SO问题中提取的: /* execute a list of .sql files against the server and DB specified */ SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRAN DECLARE @DBSe

我想在SSM中针对SQL Azure DB执行多个SQL(*.SQL)TSQL脚本文件。我碰巧正在使用SSMS 2008 R2

我试图在SSMS查询窗口中执行的代码(链接到相关DB实例)是从前面的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\u cmdshell”

如何为Azure SQL实例执行多个SQL脚本

提前谢谢


注:我知道如何在SSMS中打开文件,当使用SSMS时,脚本会发送到服务器,然后在那里执行。正如我在SQL数据库中的评论中提到的,服务器无权访问它们所在机器上的文件,也不能将它们实际上载到这些机器上。所以你的方法不起作用。也不可能打开本地计算机上的文件

要针对SQL数据库从本地计算机执行一组脚本,您必须将SQL脚本(例如)转换为PowerShell脚本:

Get-ChildItem "c:\temp\scripts" -Filter script*.sql | `
Foreach-Object{
    Write-Host 'Executing' $_.FullName
    sqlcmd -U <username>@<server> -P <Password> -S <server>.database.windows.net -d <DatabaseName> -i $_.FullName
}
获取子项“c:\temp\scripts”-筛选脚本*.sql|`
Foreach对象{
写入主机“正在执行”$\ FullName
sqlcmd-U@-P-S.database.windows.net-d-i$\ U.FullName
}

您无法在承载SQL数据库的计算机上存储或访问文件。因此,在服务器端尝试这样做是行不通的。您需要从客户端运行此命令,例如,使用PowerShell迭代文件并使用sqlcmd执行它们。@JanEngelsberg,谢谢。我试图在安装了SSM的客户端pc上运行此程序,并从中访问和查询我的SQL Azure实例。我希望我可以运行一个SQL脚本,它称为其他脚本。我知道我可以打开每个脚本文件并分别运行每个脚本文件,但我希望使过程更加高效。快速备注:我添加了粘贴
-P
选项和密码以使其工作。然后,命令将是:
sqlcmd-U@-P-S.database.windows.net-d-i$\ FullName