我尝试了几种不同的方式来连接到 Azure Sql 数据库,但每次在 powershell 中的尝试都失败了。
这是我第一次尝试使用连接字符串,结果是:用户“user”登录失败。错误
Import-Module -Name SqlServer
$connString = 'Server=tcp:{server}.database.windows.net,1433;Database={db};User ID={usr}@{server};Password={pwd};Trusted_Connection=False;Encrypt=True;'
Invoke-Sqlcmd -ConnectionString $connString -Query "SELECT 'Hello world!'"
第二次尝试,同样的错误:
Import-Module -Name SqlServer
Invoke-Sqlcmd -ServerInstance 'tcp:{db}.database.windows.net,1433' -Database '{db}' -Username '{usr}' -Password '{pwd}' -Query "SELECT 'Hello world!'"
第三次尝试使用 PSCredentials,同样的错误:
Import-Module -Name SqlServer
$password = ConvertTo-SecureString '{pwd}' -AsPlainText -Force
$mssqlCredentials = New-Object System.Management.Automation.PSCredential ('{usr}', $password)
Invoke-Sqlcmd -ServerInstance 'tcp:{server}.database.windows.net,1433' -Database '{db}' -Credential $mssqlCredentials -Query "SELECT 'Hello world!'"
我也尝试使用 Invoke-SqlCmd2 模块,但没有运气,同样的错误:
Import-Module Invoke-SqlCmd2
$connString = 'Server=tcp:{server}.database.windows.net,1433;Database={db};User ID={usr}@{server};Password={pwd};Trusted_Connection=False;Encrypt=True;'
Invoke-Sqlcmd2 -SQLConnection $connString -Query "SELECT 'Hello world!'"
我想提一下使用 SSMS 或使用 python jupyter 笔记本与 sqlachemy 进行连接没有任何问题:
from sqlalchemy import create_engine, text
conn_str = f"mssql+pymssql://[usr]:[pwd]@[server].database.windows.net:1433/[db]"
engine = create_engine(conn_str, echo=False)
with engine.connect() as conn:
result = conn.execute(text("SELECT 'Hello world!'"))
print(result.all())
很多答案都表明,如果密码包含特殊字符,我需要更改密码,尽管我使用的唯一特殊字符是“§”,并且由于该帐户使用的事实,更改密码是不可行的许多其他不同的过程。
而且我也不想在我们的堆栈中引入新的脚本语言,因此希望有人知道绕过这个永恒问题的方法。
稍后编辑:我开始相信这是 ODBC 驱动程序问题。由于Python使用它自己的SQL Server驱动程序并且它可以在Python上运行。我还在另一台远程计算机上尝试过,powershell 脚本正在运行。我仍然不确定出了什么问题。我尝试安装一些缺失的 sql 驱动程序,我认为它们可能会解决问题,但没有成功。
这些是我本地计算机上的驱动程序:
这些是来自远程计算机的驱动程序:
最佳答案
如果您之前已将 usr 和 pwd 定义为
$usr="yourUser"
$pwd="§yourPassword§"
线
$password = ConvertTo-SecureString '{pwd}' -AsPlainText -Force
应该是
$password = ConvertTo-SecureString $pwd -AsPlainText -Force
意味着您需要将变量'{usr/pwd}'替换为$usr/$pwd
这应该有效:
Import-Module -Name SqlServer
$usr = "yourUser"
$pwd = "abc§123AAA"
$db = "yourDatabase"
$password = ConvertTo-SecureString $pwd -AsPlainText -Force
$password = New-Object System.Management.Automation.PSCredential ($usr, $password)
Invoke-Sqlcmd -ServerInstance 'tcp:{server}.database.windows.net,1433' -Database $db -Credential $mssqlCredentials -Query "SELECT 'Hello world!'"
关于python - 尝试连接到 Azure Sql 数据库时,用户 'user' 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75757412/