如何使用PowerShell查询Azure托管实例中的数据库?
针对Azure SQL托管实例的PowerShell查询方案
原代码的问题点
- 服务器地址格式不符合Azure托管实例的规范
- 查询语句字符串未闭合(缺少结尾双引号)
- 未显式指定Azure SQL强制要求的加密连接参数
修正后的SQL认证查询代码
# 定义连接参数 $sqlParams = @{ Server = "<你的托管实例名>.database.windows.net" # 公网访问用此格式,私有环境替换为内部FQDN Database = "<目标数据库名称>" Username = "<SQL登录账号>" Password = "<SQL登录密码>" Query = "SELECT * FROM [dbo].[SystemInfo] WHERE <合法查询条件>" # 补全有效的WHERE子句逻辑 Encrypt = "True" # Azure SQL强制要求加密连接 TrustServerCertificate = "False" # 使用Azure官方CA证书,不自定义信任 } # 执行查询并获取结果 $testQuery = Invoke-Sqlcmd @sqlParams
可选:Azure AD身份认证查询方式
如果使用Azure AD账号(如同步的本地AD账号或Azure AD原生用户),可以用以下代码:
$sqlParams = @{ Server = "<你的托管实例名>.database.windows.net" Database = "<目标数据库名称>" Query = "SELECT * FROM [dbo].[SystemInfo] WHERE <合法查询条件>" Encrypt = "True" TrustServerCertificate = "False" Authentication = "ActiveDirectoryPassword" # 本地AD集成认证可改用ActiveDirectoryIntegrated Username = "<Azure AD账号>" Password = "<Azure AD账号密码>" } $testQuery = Invoke-Sqlcmd @sqlParams
关键注意事项
- 公网访问时,需确保客户端IP已加入托管实例的防火墙允许列表
- 私有网络访问时,客户端需处于同一虚拟网络或通过VPN/ExpressRoute连通
- 必须补全WHERE子句的有效逻辑,比如
WHERE SystemInfoId = 1这类合法条件
内容的提问来源于stack exchange,提问作者Ayanda ezekiel
相关产品推荐
相关产品推荐

