2

我试图让 powershell 从本地连接到 Azure SQL 数据库。我尝试了以下代码段

$params = @{
  'Database' = 'dbsitenamehere'
  'ServerInstance' =  'instancename.database.windows.net'
  'Username' = 'abcites'
  'Password' = 'atbasIcpr0d'
  'OutputSqlErrors' = $true
  'Query' = 'SELECT * FROM Users'
 }
 Invoke-Sqlcmd  @params

但我收到了这个警告:

警告:无法获取 SQL Server 服务信息。尝试连接到“Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml”上的 WMI 失败,出现以下错误:RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)

我认为,通过手动从 Hodentek @ http://hodentekmss.blogspot.in/2014/11/how-to-overcome-error-while-importing共享的组件服务链接打开 RPC 定位器服务来解决上述问题.html >> “如何在将 SQLPS 模块导入 Powershell 时克服错误?”

PS SQLSERVER:\> Import-Module “sqlps” -DisableNameChecking
PS SQLSERVER:\> cd SQL
PS SQLSERVER:\SQL> dir
  MachineName                     
  -----------                     
  PC181578                        

PS SQLSERVER:\SQL> cd LocalHost
PS SQLSERVER:\SQL\LocalHost> dir

但是我收到以下错误并卡住了。我想我错过了一些愚蠢的东西。. 筋疲力尽的, :(

Invoke-Sqlcmd : Invalid object name 'Users'.
At line:17 char:3
+   Invoke-Sqlcmd  @params
+   ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException
+ FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

请求一些可以让我继续前进的建议。我觉得在我建立联系的方法中遗漏了一些东西。

谢谢

H巴拉

4

1 回答 1

0

RPC 定位器服务启动绝对是正确的步骤。它得到了警告和本地查找更正。

但是我得到“无效对象错误”的原因是因为导入完成但没有创建定义的所有模式。

近距离观察揭示了以下内容:

1. Get-AzureSqlDatabaseImportExportStatus 不返回任何状态。

Get-AzureSqlDatabaseImportExportStatus -RequestId $ImportRequest.RequestGuid            
  -ServerName $deployParameters.Item('sqlserverName') 
  -Username $credential.UserName
  1. 尝试以如下方式以编程方式了解进度,显示它卡在 5% 处,然后突然闪烁完成

        $ImportRequest = Start-AzureSqlDatabaseImport -SqlConnectionContext $SqlCtx -StorageContainer $Container -DatabaseName $deployParameters.Item('databaseName') -BlobName $BlobName
    
                        # Check the status of the import
                    Do
                    {
                        $importStatus = Get-AzureSqlDatabaseImportExportStatus -Request $importRequest
    
                        # Check if import failed
                        if($importStatus.Status -eq "Failed")
                        {
                            Write-Output -Message $importStatus.ErrorMessage
                            $importDone = 1;
                        }
    
                        # Check if import is completed
                        if($importStatus.Status -eq "Completed")
                        {
                            Write-Output "$(Get-Date -f $timeStampFormat) - Restore database complete"
                            $importDone = 1;
                        }
    
                        # If not failed or completed, return the status of the current import
                        if(($importStatus.Status -ne "Completed" -or $importStatus.Status -ne "Failed") -and $importDone -ne 1)
                        {
                            Write-Output "$(Get-Date -f $timeStampFormat) - Import status: $($importStatus.Status)"
                        }
    
                        # Added a sleep so that the Write-Output doesn't get flooded
                        Start-Sleep -s 3
                    }While($importDone -ne 1)
    
  2. 直接在 PS 提示符下尝试让我在 SSMS 上完成导入,但我只能看到30% 的表已创建

      PS SQLSERVER:\> Get-AzureSqlDatabaseImportExportStatus -RequestId  
      $ImportRequest.RequestGuid -ServerName   
      $deployParameters.Item('sqlserverName') -Username $credential.UserName
      cmdlet Get-AzureSqlDatabaseImportExportStatus at command pipeline   position 1
      Supply values for the following parameters:
      (Type !? for Help.)
      Password: ABCEfg1pr0
    

BlobUri:https ://ABC.blob.core.windows.net/kind-snapshot/kind-snapshot.bacpac

数据库名称 : Pilotdbtrialrun

错误信息 :

最后修改时间:2016 年 6 月 3 日下午 2:29:29

排队时间:2016 年 6 月 3 日下午 2:27:42

请求 ID:0f76af7b-7452-4cd4-a7a8-d6XXX4dc5923

请求类型:导入

服务器名称:pilotsrvrtrialrun.database.windows.net

状态:已完成

扩展数据:

4.通过门户导入相同的backpac可以正确创建完整的数据库表。

于 2016-06-03T10:17:03.223 回答