如何在 SQL Azure 数据库中使用 T-SQL 命令导出带有参数的过程的结果集

问题描述 投票:0回答:1

我必须使用 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;
azure-sql-database xp-cmdshell export-csv
1个回答
0
投票

SQL Azure 没有可用的命令提示符。

将 SQL Azure 视为没有主机基础设施(物理或虚拟)的虚拟化服务。

您将无法从 Azure 访问 BCP,因为它确实是一个命令行程序。在可以访问命令行的计算机上,您应该设置 BCP,它是命令行实用程序之一。

解决此问题的方法如下:

  • 设置 Azure SQL Server VM (IaaS) 来执行您的要求。您可以在 Azure SQL Server VM (IaaS) 上找到
    xp_cmdshell
  • 您可以使用数据工厂将存储过程数据存储到本地的文件中。 enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.