无法从PowerShell访问Azure数据库

时间:2015-06-01 07:32:40

标签: sql powershell azure azure-sql-database

我尝试连接到azure db并从powershell进行了一些更改。

$folder = "C:\Depl"
$connectionString = "Data Source=servername.database.windows.net,1433;Initial Catalog=configurationDB;User Id=username@servername;Password=Qwerty$5ok;Trusted_Connection=False;"
$dataTable = "[configurationDB].[dbo].[parameters]"    

$con = new-object "System.Data.SqlClient.SqlConnection"
$con.ConnectionString = ($connectionString)

$sqlcmd = new-object "System.Data.SqlClient.SqlCommand"
$sqlcmd.connection = $con
$sqlcmd.CommandTimeout = 600000

$con.Open()

... other actions ...

我曾经没有任何问题地工作,但突然间它开始下降,但是:

Exception calling "Open" with "0" argument(s): "Login failed for user 'username'.
This session has been assigned a tracing ID of 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.  Provide this tracing ID to customer support when you need assistance."
At C:\Depl\ChangeParams.ps1:21 char:5
+     $con.Open()
+     ~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SqlException

我不知道发生了什么事,因为我根本没有改变.ps1中的任何东西(它差不多半年前就被设置了,并没有改变,因为我只是在我想要更新时才需要运行它一些参数)。

我认为1433端口在防火墙中被阻止但是......尽管无法从powershell连接,但我可以在SQL Server管理中没有任何问题。

Ant想法可能有什么不对?我跑出了他们......

2 个答案:

答案 0 :(得分:0)

从错误中看起来好像你没有替换'用户名'在上面的连接字符串中。请参阅以下代码,quick example与您的代码进行比较/对比。

答案 1 :(得分:0)

也许您在用户的密码中有$

我遇到了同样的问题。

症状如下:我有两个数据库服务器;让我们打电话给他们"服务器A"和"服务器B"。在"服务器A"上,我试图建立一个简单的连接并且登录成功,但在"服务器B"我收到了异常消息:

  

错误:异常调用"打开"用" 0"参数:"用户登录失败' XXXX'。
  已为此会话分配了跟踪ID' XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX'。提供此跟踪ID   在您需要帮助时提供客户支持。"

我怀疑我必须在服务器B上进行一些必须限制登录过程的配置。

解决方案

服务器B上的我的SQL用户密码为$,而powershell使用$字符来引入变量,因此我必须在每个$前加一个反引号字符:

$Password = "Pa$$word"

必须替换为

$Password = "Pa`$`$word"