我有一些 Powershell 代码可以在我想通过 Azure 自动化安排的 SQL Server 托管实例上删除数据库。该代码在 Windows Powershell ISE 中运行良好。
#Type the Managed instance admin login
$username = "uname"
#Type the Managed instance admin password
$password = 'pwd'
#Type the Full Managed instance name
$managedInstance = "sql-srvr_mangedinstance.database.windows.net"
#Leave this parameter as is
$database = "master"
#Drop Database before restore
Invoke-Sqlcmd -ServerInstance $managedInstance -Database $database -Username $username -Password $password -Query "DROP DATABASE [DB_NAME]"
Write "Dropped Database DB_NAME"
不幸的是,当我通过 Azure 上的 Runbook 运行它时,它给了我这个错误。
Invoke-Sqlcmd:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP Provider,错误:0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。)在 line:32 char:1 + Invoke -Sqlcmd -ServerInstance $managedInstance -Database $database -U ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException + FullyQualifiedErrorId:SqlExceptionError,Microsoft.SqlServer.Management.PowerShell。
我已经通过将服务器连接更改为“Server=tcp:managedinstancename.database.windows.net:1433”来解决此问题,但这似乎更倾向于 vm 上的 Sql Server DB。我还在代码顶部包含了 Import-Module Sqlserver 命令,即使该模块已经在运行手册模块刀片中。使用 SSMS 连接到实例我可以确认勾选了允许远程连接框。