PowerShell 7中Invoke-Sqlcmd连接数据库报错,请求排查问题原因
问题根源
Invoke-Sqlcmd是微软专门给SQL Server开发的命令行工具,它默认只支持SQL Server的通信协议,完全不兼容MySQL数据库。你用它连接MySQL,自然会触发找不到服务器的错误——因为它根本不知道怎么和MySQL打交道。
可行解决方案
方案1:用官方MySQL PowerShell模块
- 先安装MySQL官方的PowerShell模块:
Install-Module -Name MySQLConnector -Scope CurrentUser
- 用模块提供的.NET类执行查询:
$Server = 'localhost' $Database = 'db' $Query = "SELECT 'This is output'" $Username = 'root' $Password = 'pass' # 构建连接字符串并建立连接 $connStr = "server=$Server;user id=$Username;password=$Password;database=$Database;" $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) $conn.Open() # 执行查询并读取结果 $cmd = $conn.CreateCommand() $cmd.CommandText = $Query $resultReader = $cmd.ExecuteReader() while ($resultReader.Read()) { Write-Host $resultReader[0] } # 记得关闭连接 $conn.Close()
方案2:直接调用mysql命令行工具
既然你已经能在PowerShell里正常用mysql命令,直接用它执行查询更简单,不用额外装模块:
$Server = 'localhost' $Database = 'db' $Query = "SELECT 'This is output';" $Username = 'root' $Password = 'pass' mysql -h $Server -u $Username -p$Password -D $Database -e "$Query"
内容的提问来源于stack exchange,提问作者Роман Рослый
相关产品推荐
相关产品推荐

