通过Powershell连接到Azure SQL数据库

时间:2016-06-02 12:31:24

标签: sql-server powershell azure arm-template

我试图让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://hodentekmsss.blogspot.in/2014/11/how-to-overcome-error-while-importing.html>>共享,手动启用组件服务链接中的RPC Locator服务,解决了上述问题。 "如何在将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 Bala

1 个答案:

答案 0 :(得分:0)

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

但是我得到了"无效对象错误"是因为导入正在完成但尚未创建所定义的所有模式。

关闭观察结果显示如下:

<强> 1。 Get-AzureSqlDatabaseImportExportStatus不返回任何状态。

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

        $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
    
  3.   

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

         

    DatabaseName:Pilotdbtrialrun

         

    ErrorMessage:

         

    LastModifiedTime:6/3/2016 2:29:29 PM

         

    QueuedTime:6/3/2016 2:27:42 PM

         

    RequestId:0f76af7b-7452-4cd4-a7a8-d6XXX4dc5923

         

    RequestType:导入

         

    ServerName:pilotsrvrtrialrun.database.windows.net

         

    状态:已完成

         

    ExtensionData:

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