繁体   English   中英

使用 Z3D265B4E1EEB18CCZ0 对 Azure SQL 数据库运行 SQL 查询

[英]Run SQL query against Azure SQL database using PowerShell

我的任务是从我们的 Azure SQL 数据库中检索用户列表。 我们有 100 个 Azure SQL 数据库,我想使用 PowerShell 来快速完成任务。

我正在使用连接字符串(Active Directory 集成)。 我相信我能够使用带有 PowerShell 的连接字符串登录到 SQL 数据库。

但是,运行 SQL 时出现错误。 下面是代码和异常。 请你帮助我好吗?

代码:

try {
    $new = 'Server=tcp:dummy.database.windows.net,1433;Authentication="Active Directory Integrated";Initial Catalog=xtoiteuitbdbsqldb01;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;'
    $sql = "SELECT * FROM sys.database_principals"
  $temp_result_object = invoke-sqlcmd -ConnectionString $new -Query $sql
} catch {
  "error when running sql $sql"
  write-host "Exception type: $($_.Exception.GetType().FullName)" -ForegroundColor Red
    write-host "Exception message: $($_.Exception.Message)" -ForegroundColor Red
    write-host "Error: " $_.Exception -ForegroundColor Red   
}

例外:

异常类型:ManagedBatchParser.ParserException
异常消息:
错误:ManagedBatchParser.ParserException

在 ManagedBatchParser.Parser.Parse()
在 Microsoft.SqlServer.Management.PowerShell.ExecutionProcessor.ExecuteTSql(字符串 sqlCommand)

您可以使用 .NET SqlClient提供程序来使用密码或“Active Directory Integrated”身份验证,例如:

# connect to database
$dbConn = New-Object System.Data.SqlClient.SqlConnection
$dbConn.ConnectionString = "Server=tcp:dummy.database.windows.net,1433;Database=DummyDB;Authentication=Active Directory Integrated;Encrypt=True;"
$dbConn.Open()

# construct command
$dbCmd = New-Object System.Data.SqlClient.SqlCommand
$dbCmd.Connection = $dbConn
$dbCmd.CommandText = "SELECT * FROM sys.database_principals"

# fetch all results
$dataset = New-Object System.Data.DataSet
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter
$adapter.SelectCommand = $dbCmd
$adapter.Fill($dataset)

# display results
$dataset.Tables | Format-Table

试试下面的方法,看看它是否有帮助:

$Svr = "SVR"
$SvrPort = 10003
$Username = "ABC\sql"
$Password = "ABC#@!"

$Password = $Password | ConvertTo-SecureString -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$Password
$Inst = $Svr + "," + $SvrPort

Get-PSSession

New-PSSession -ComputerName $Svr -Credential $Cred

Invoke-Sqlcmd -ServerInstance $Inst -Database "master" -Query "SELECT @@SERVERNAME AS SERVER_NAME"

Get-PSSession

Get-PSSession | Remove-PSSession

Invoke-Sqlcmd -ServerInstance $Inst -Database "master" -Query "SELECT @@SERVERNAME AS SERVER_NAME"

Get-PSSession

另请参阅以下帖子以供进一步参考:

Active Directory 密码连接 Azure SQL Azure 自动化失败

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM