我尝试从Azure Runbook运行一段非常简单的代码,但当我运行时,它会导致以下错误消息
Exception calling "Open" with "0" argument(s): "The target principal name is incorrect. Cannot generate SSPI context."
代码:
workflow test
{
inlinescript {
try
{
"Logging in to Azure..."
Connect-AzAccount -Identity
}
catch {
Write-Error -Message $_.Exception
throw $_.Exception
}
$ServerName = "sqlserverinstance.database.windows.net"
$DB = "database_instance"
$token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
$token
Invoke-SqlCmd -ServerInstance $ServerName -Database $DB -AccessToken $token -Query "some query"
}
}
我正在使用运行5.1的Powershell工作流Runbook。我还更新了SQLServer模块,但没有成功。当我从Azure Cloud Shell运行时,我没有遇到这个问题。另一件事是,当我使用-Credentials参数运行命令时,它工作正常。但我希望使用访问令牌;因此,我采取上述方法。
1条答案
按热度按时间nue99wik1#
有各种各样的原因可以阻止SQL Server连接到数据库并获取结果。
需要检查并解决:
1.首先,您需要是帐户的管理员,并为SQL Server添加"* SQL DB贡献者,SQL Server贡献者 *"。
1.将服务器系统标识分配给SQL Server,并通过引用MsDoc授予"目录读取器"访问服务器标识的权限。
1.若要运行Runbook中的SQL命令或连接到SQL Server,您需要使用指定连接字符串的模板。
1.检查您是否在尝试连接
connect-azaccount -identity
时为自动化帐户启用了系统标识1.当你尝试通过Azure AD连接时,请通过访问
AzureAD -> App registrations -> New registration
注册新的应用注册并启用API permissions
。输出:
Reference