PowerShell-Cmdlet für die Migrationsauswertung

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Das Save-SqlMigrationReport ist ein Tool zur Auswertung der Eignung mehrerer Objekte einer SQL Server-Datenbank für die Migration.

Derzeit beschränkt sich dieses Cmdlet noch auf die Auswertung der Migrationseignung von In-Memory-OLTP. Das Cmdlet kann in einer erweiterten Windows PowerShell-Umgebung und in Sqlps ausgeführt werden.

Als Alternative zum direkten Ausführen dieses PowerShell-Cmdlets können Sie das Cmdlet implizit mithilfe von SQL Server Management Studio (SSMS) ausführen. Klicken Sie im Objekt-Explorer von SSMS mit der rechten Maustaste auf eine Tabelle, und klicken Sie dann auf Ratgeber für die Speicheroptimierung.

Syntax

Save-SqlMigrationReport
    -FolderPath <output_path>
    [ -MigrationType <migration_scenario_type> ]
    [
        [ -Server <server_name> -Database <database_name>
            [ -Schema <schema_name> ] [ -Object <object_name> ]
        ]
       |
        [ -InputObject <smo_object> ]
    ]
;

Parameter

Die Parameter werden in der folgenden Tabelle erläutert.

Es gibt Syntaxaspekte, auf die hingewiesen werden sollte. Wenn Sie den Parameter -InputObject angeben, können Sie keinen der folgenden Parameter angeben:

  • -Server
  • -Database
  • -Schema
  • -Object

Wenn Sie -InputObjectnicht angeben, dann müssen Sie umgekehrt -Server und -Database angeben. Wenn Sie -Server angeben, haben Sie die Möglichkeit, den Bereich einzuschränken, indem Sie entweder -Schema oder -Object oder beides angeben.

Parametername Beschreibung
Datenbank Der Name der SQL Server-Zieldatenbank. Obligatorisch, wenn -Server obligatorisch ist.

Optional in SQLPS.
FolderPath Der Ordner, in dem das Cmdlet die generierten Berichte speichern soll.

Erforderlich.
InputObject Das SMO-Zielobjekt des Cmdlets.

In der Windows PowerShell-Umgebung obligatorisch, wenn -Server nicht angegeben wird.

Optional in SQLPS.
MigrationType Der Typ des Migrationsszenarios, den das Cmdlet überprüft. Derzeit ist der einzige Wert der Standardwert „OLTP“.

Optional.
Object Der Name des Objekts, zu dem ein Bericht erstellt werden soll. Kann eine Tabelle oder eine gespeicherte Prozedur sein.
Kennwort Ist erforderlich, wenn -Username erforderlich ist.
Schema Der Name des Schemas, das das Objekt besitzt, zu dem ein Bericht erstellt werden soll.

Optional.
Server Der Name der SQL Server-Zielinstanz. In der Windows PowerShell-Umgebung obligatorisch, wenn der Parameter -InputObject nicht angegeben wird.

Optional in SQLPS.
Username Erforderlich, wenn eine Verbindung über SQL Server-Authentifizierung hergestellt wird (im Gegensatz zu Windows-Authentifizierung). Kann andernfalls ausgelassen werden.

Voraussetzungen

Bevor Sie dieses Cmdlet ausführen können, müssen Sie zunächst das Modul mit dem Namen SqlServerinstallieren:

  • Install-Module -Name SqlServer

Hinweis

Das alte SQLPS-Modul wird nicht mehr unterstützt. Verwenden Sie das neuere SqlServer-Modul.

Weitere Informationen finden Sie unter Installieren des SQL Server PowerShell-Moduls.

Cmdlet-Beispielzeile

Als nächstes folgt die eigentliche Cmdlet-Zeile, die ausgeführt wurde, um den Bericht zu generieren, der später in diesem Artikel gezeigt wird.

Save-SqlMigrationReport `
  -FolderPath 'C:\Test\PowerShell-ps1\Save-SqlMigrationReport\' `
  -Server 'MyUserName123456.database.windows.net' `
  -Database 'MyDatabaseName_31' `
  -Schema 'dbo' `
  -Object 'Table2' `
  -Username 'MyUserName' `
  -Password 'MyPassword' `
  -MigrationType 'OLTP' `
;

Beispielausgabe des Berichts

Unter dem für den Parameter -FolderPath angegebenen Ordner werden die folgenden beiden Ordnerpfade durch Ausführen dieses Cmdlets erstellt. Beide Pfade beginnen mit dem server_name Wert:

  • MyDatabaseName_31\Tables\
  • MyDatabaseName_31\Stored Procedures\

Jede Objektberichtsdatei wird im entsprechenden Ordner gespeichert.

Die Namen der Berichtsdateien tragen die Dateierweiterung .html. Beispielsweise ist dies ein tatsächlich generierter Dateiname: MigrationAdvisorChecklistReport_Table2_20190728.html.

Die HTML-Datei besteht größtenteils aus einer zweispaltige Tabelle mit den folgenden Kopfzeilen:

  • Beschreibung
  • Überprüfungsergebnis

Nun folgt ein tatsächliches Beispiel für den HTML-Bericht für eine Tabelle.

<?xml version="1.0" encoding="utf-8"?>
<html>
  <head>
    <title>Memory optimization checklist for [MyDatabaseName_31].[Table2]</title>
  </head>
  <body>
    <p STYLE="font-family: Verdana, Arial, sans-serif; font-size: 14pt;">
      <b>Memory optimization checklist for [MyDatabaseName_31].[Table2]</b>
    </p>
    <p STYLE="font-family: Verdana, Arial, sans-serif; font-size: 10pt;">
      <b>Report Date/Time:</b>7/28/2019 2:25 PM<br /></p>
    <table border="1" cellpadding="5" cellspacing="0" STYLE="font-family: Verdana, Arial, sans-serif; font-size: 9pt;">
      <tr style="background-color:Silver">
        <th colspan="2" align="center">Description</th>
        <th align="center">Validation Result</th>
      </tr>
      <tr valign="top">
        <td colspan="2">No unsupported data types are defined on this table. </td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top" style="background-color:LightYellow">
        <td colspan="2">No sparse columns are defined for this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top">
        <td colspan="2">No identity columns with unsupported seed and increment are defined for this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top" style="background-color:LightYellow">
        <td colspan="2">No foreign key relationships are defined on this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top">
        <td colspan="2">No unsupported constraints are defined on this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top" style="background-color:LightYellow">
        <td colspan="2">No unsupported indexes are defined on this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top">
        <td colspan="2">No unsupported triggers are defined on this table.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top" style="background-color:LightYellow">
        <td colspan="2">Post migration row size does not exceed the row size limit of memory-optimized tables.</td>
        <td>Succeeded</td>
      </tr>
      <tr valign="top">
        <td colspan="2">Table is not partitioned or replicated.</td>
        <td>Succeeded</td>
      </tr>
    </table>
  </body>
</html>

Die Tabelle sieht ungefähr wie folgt aus.

Beschreibung Überprüfungsergebnis
Für diese Tabelle sind keine nicht unterstützten Datentypen definiert. Erfolgreich
Für diese Tabelle sind keine Sparsespalten definiert. Erfolgreich
Für diese Tabelle sind keine Identitätsspalten mit nicht unterstütztem Seed und Inkrement definiert. Erfolgreich
Für diese Tabelle sind keine Fremdschlüsselbeziehungen definiert. Erfolgreich
Für diese Tabelle sind keine nicht unterstützten Einschränkungen definiert. Erfolgreich
Für diese Tabelle sind keine nicht unterstützten Indizes definiert. Erfolgreich
Für diese Tabelle sind keine nicht unterstützten Trigger definiert. Erfolgreich
Die Zeilengröße nach der Migration überschreitet nicht die maximale Zeilengröße speicheroptimierter Tabellen. Erfolgreich
Die Tabelle ist nicht partitioniert oder repliziert. Erfolgreich