我必须使用 T-SQL 命令将 SQL Azure 实例中具有 2 个输入参数的存储过程的结果导出到 SSMS 中的
.csv
文件。问题是,我需要通过更改参数在 while 循环中运行此存储过程 3000 多次。因此我不知道是否可以使用导入导出向导。
DECLARE @ReviewerId INT
SET @ReviewerId = ''
WHILE @ReviewerId IS NOT NULL
BEGIN
SELECT @ReviewerId = MIN(Id)
FROM @Reviewers
WHERE Id > @ReviewerId
IF @ReviewerId IS NOT NULL
BEGIN
DECLARE @ReviewerAlias nvarchar(100)
DECLARE @ReviewIdentifier nvarchar(100) = 'SomeGUID'
SELECT @ReviewerAlias = ReviewerAlias
FROM @Reviewers
WHERE Id = @ReviewerId
PRINT N'Working on '+CAST(@ReviewerId AS VARCHAR)+': '+@ReviewerAlias+'';
-- Need to export the result of below command to .csv file.
EXEC MyDatabaseName.dbo.MyStoredProcedure @reviewer = @ReviewerAlias, @reviewIdentifier = @ReviewIdentifier
END
END
我用谷歌搜索了一下,发现了下面的命令。但是 SQL Azure 实例在 master 数据库中没有
xp_cmdshell
。我该如何继续?
DECLARE @sql VARCHAR(8000);
SELECT @sql = 'bcp "MyDatabaseName.dbo.MyStoredProcedure ''Parameter1'',''Parameter2''" queryout "V:\MyDocuments\SourceType.csv" -c -t, -T -S ' + @@Servername;
EXEC master..xp_cmdshell @sql;
SQL Azure 没有可用的命令提示符。
将 SQL Azure 视为没有主机基础设施(物理或虚拟)的虚拟化服务。
您将无法从 Azure 访问 BCP,因为它确实是一个命令行程序。在可以访问命令行的计算机上,您应该设置 BCP,它是命令行实用程序之一。
解决此问题的方法如下:
xp_cmdshell
。