3

在此处输入图像描述在此处输入图像描述我一直在努力安装 DevOpsServer 2019-RC1 以查看我的 Azure SQL Server

按照建议,我的 DevOpsServer 安装在 Azure VM 上

我已经实现了以下文档中有关为 VM 设置 MSI 并通过 AAD 身份验证授予 MSI 访问 Azure SQL 的所有内容:

我还添加了 VM NIC 所在的 VNET,作为 Azure SQL Server 上的 VNET 防火墙规则,以确保没有连接问题

我的 DevOpsServer 拒绝查看 Azure SQL Server 或其数据库

为了确认 Azure SQL 没有被 VM 阻止,我在 VM 上成功创建了一个 ODBC 系统 DSN 连接,它允许我查看 Azure SQL Server 及其数据库

根据参考文档:

  • 在设置新的 DevOps Server 实例时,我选择了“这是一个新的 Azure DevOps Server 部署
  • 在配置向导的“数据库”页面上,指定 Azure SQL 数据库服务器实例,通常采用“SQLInstanceName.database.windows.net”的形式

请让我知道我是否可以做任何其他事情来帮助 Devops 服务器配置向导查看我的 Azure SQL Server 和数据库

PS如果这改变了能力,我试图让它在Azure政府(MAG)中工作......

尝试通过以下 Powershell 脚本以编程方式连接到 SQL 数据库时收到错误:

# Retrieve the access token
$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"}
$content = $response.Content | ConvertFrom-Json
$AccessToken = $content.access_token

# Create the connection
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source = test-sqlsrv.database.usgovcloudapi.net; Initial Catalog = inldb"
$SqlConnection.AccessToken = $AccessToken
$SqlConnection.Open()

# Send a Query
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT * from <TABLE>;"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

在此处输入图像描述

4

5 回答 5

2

尝试ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo从集合和配置数据库运行。我有一个 PR 要将其添加到文档中,这可能会导致您的问题。

于 2018-12-21T16:59:48.583 回答
0

我同意您应该执行 PowerShell 测试来测试您的 MSI。看起来您在访问 IP 以获取访问令牌时遇到问题。如果您尝试从政府网络连接,您很可能正在通过某种类型的网络代理服务(Blue Coat 等)访问互联网。您可以通过使用 Invoke-WebRequest 命令上的 -UserAgent 参数从浏览器中模拟用户代理字符串来欺骗代理。

如果这不起作用,您可能需要联系您的代理团队来解决问题。

最后,如果您能够在 PowerShell 中成功测试,但在 DevOps 安装中仍然出现连接测试错误,请确保按照此处的步骤操作:

https://docs.microsoft.com/en-us/tfs/server/install/install-azure-sql

我忘记将用户添加到主数据库......一旦我这样做了,一切正常。祝你好运。

于 2019-02-19T16:24:34.467 回答
0

Gvazzana, I also recommend testing with the script danwkennedy provided, but be sure to change database.windows.net to database.usgovcloudapi.net for Azure Government.

I would pay close attention to any errors around obtaining an access token and errors associated with opening the SQL connection.

If nothing's standing out is it possible to capture a Fiddler trace?

于 2019-01-07T20:13:31.047 回答
0

您可以使用您的 Windows 身份验证级别访问您的Azure Devops数据库。所以您的 Windows 登录用户应该已经sysadmin privilege在您的数据库中配置(例如 Microsoft SQL 服务器)

于 2022-01-09T11:10:54.643 回答
0

尝试通过 Powershell 而不是 Azure DevOps Server 连接到 SQL 实例。

您可以运行以下脚本来执行此操作:

# Retrieve the access token
$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
$content = $response.Content | ConvertFrom-Json
$AccessToken = $content.access_token

# Create the connection
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>"
$SqlConnection.AccessToken = $AccessToken
$SqlConnection.Open()

# Send a Query
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT * from <TABLE>;"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

这至少应该给你一个更具描述性的调试错误。

于 2019-01-02T20:52:18.310 回答