【问题标题】:Unable to connect Powershell to AzureSQL database无法将 Powershell 连接到 Azure SQL 数据库
【发布时间】:2020-09-24 16:14:20
【问题描述】:

我正在编写一个 Powershell 脚本,它应该连接和查询数据库(托管在 Azure 中)。我可以使用我的 AzureAD ID 毫无问题地连接到 SSMS。但是,我无法在 Powershell 中做同样的事情。我正在为我的连接字符串使用这种模式:

"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Password;Database=myDataBase;UID=myUser@myDomain;PWD=myPassword;"

为了清楚起见,连接字符串工作得很好,数据库管理员告诉我我拥有所有需要的权限。造成这种情况的可能原因是什么?我尝试了 Invoke-SqlCMD 和 ADO.net。请帮忙!!

【问题讨论】:

  • 你安装了prerequisite ADAL.DLL drivers吗? SSMS 安装 32 位版本,您可能在 64 位 PowerShell 中运行。
  • 谢谢,但我不这么认为。虽然我没有安装这些,但这应该不是问题,因为我可以连接到其他服务器。我的问题是一台特定的服务器。我希望的解决方案应该是配置服务器以允许 powershell 连接,以便我可以告诉数据库管理员。

标签: sql-server powershell azure-active-directory ssms


【解决方案1】:

这是我作为测试运行的一段代码,它运行良好。

$server = "tcp:thesqlservername.database.windows.net,1433"
$database = "testdb"
$adminName = "testuser01@mytenantname.onmicrosoft.com"
$adminPassword = "TestPassword"
$connectionString = "Server=$server;Database=$database;User ID=$adminName;Password=$adminPassword;authentication=Active Directory Password;"
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString)

$ds = new-object "System.Data.DataSet" "dsPersonData"
$q = @"
SELECT * FROM [SalesLT].[Customer] 
"@
$da = new-object "System.Data.SqlClient.SqlDataAdapter" ($q, $connection)
$da.Fill($ds)
$dtPerson = $ds.Tables[0]

我创建了一个演示 azure sql db,在 azure 的 sql server 上将测试用户设置为“活动目录管理员”,并在我的桌面上安装了 smss(管理工作室)进行测试。

你遇到了什么错误?

【讨论】:

  • 使用“1”个参数调用“Fill”的异常:“发生了一个或多个错误。”在 line:46 char:1 + $da.Fill($ds) + ~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : AggregateException
  • 在那里的某个地方,在 $connection 行之后,您可以输入 $connection.open() 并查看是否从 open() 获得任何输出吗?
  • 如果您使用“0”参数调用 open 异常,则基本上意味着它不喜欢您的凭据,无论是用户名还是密码。可能您的密码中有一些字符会导致在 powershell 中的解析出现问题?在连接字符串中,$adminPassword 尝试将其包装在 ``" 中(在 " 前面只有一个反向刻度,当我只放置 1 个刻度时,stackoverflow 正在转义我的字符串。在 powershell 中,转义字符是 `。
  • 谢谢。这可能与服务器的设置方式有关。我还创建了一个演示 Azure SQL DB,我可以连接。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2021-04-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
相关资源
最近更新 更多