我尝试连接到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想法可能有什么不对?我跑出了他们......
答案 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"