如何修复几个错误-生成SQL脚本

问题描述

尝试创建sql脚本以用于用户从本地sql DB迁移到Azure sql。得到以下两个错误。 Noob在这里,我们将不胜感激,因为它真的在竭尽全力解决此问题。

Split-Path:不能将参数绑定到参数“ Path”,因为它为null。 New-UserMigrationsql: 线| 10 | -TargetServersqlAdminPassword“ $ Manager1”` | ~~~~~~~~~~~~ |无法将参数绑定到参数“ TargetServersqlAdminPassword”,因为它是一个空字符串。

 $ErrorActionPreference = "Stop"
 $PSScriptRoot = Split-Path -parent $MyInvocation.MyCommand.Path
 Import-Module C:\Cloud\GeneratePostCloudMigrationsql.psm1 -Force



 New-UserMigrationsql `
-SourceServer "mysourcesql Database Server name" `
-SourceDatabase "mysource database" `
-SourceServersqlAdminUsername "admin" `
-SourceServersqlAdminPassword "admin password" `
-targetCloudProvider "Azure" `
-TargetServer "test.database.windows.net" `
-TargetDatabase "test_migration" `
-TargetServersqlAdminUsername "admin" `
-TargetServersqlAdminPassword "admin password" `
-QueryTimeout 120 `
-TargetDomain "@mydomain.com" `
-TargetDomainType "AAD" `
-usernameConversionMap $usernameConversionMap `
-outputDirForGeneratedsql "./generatedsql/"

解决方法

第一个是由在命令行上使用$MyInvocation.MyCommand.Path引起的。仅在运行.ps1脚本文件时才为automatic variable分配一个值。另外,有关同一问题,请参见earlier answer

第二个声称包含管理员密码的变量不存在。错误提示应该是

-TargetServerSQLAdminPassword "$Manager1"

但是粘贴的代码具有不同的内容:

-TargetServerSQLAdminPassword "admin password"

管理员密码变量很可能未初始化或名称拼写错误。要捕获此类错误,请使用严格模式。如果使用未初始化的变量,它将使Powershell给出错误消息。

set-strictmode -version 'latest'