Невозможно использовать Azure SQL с Azure DevOps Server 2019 (правительство Azure) - PullRequest
0 голосов
/ 20 декабря 2018

enter image description hereenter image description here Я пытался получить установку DevOpsServer 2019-RC1, чтобы увидеть мой SQL Server Azure

Моя установка DevOpsServer включенаВиртуальная машина Azure, как рекомендовано

Я реализовал все из приведенной ниже документации, касающейся настройки MSI для виртуальной машины и предоставления доступа MSI к Azure SQL через проверку подлинности AAD:

Я также добавил VNET, в которой расположена сетевая карта виртуальной машины, в качестве правила брандмауэра VNET на SQL Server Azure, чтобы гарантировать отсутствие проблем с подключением

Мой DevOpsServer отказывается видеть Azure SQL Server или его базы данных

Чтобы подтвердить, что Azure SQL не заблокирован от виртуальной машины, я успешно создал системное DSN-соединение ODBC на виртуальной машине, что позволяетмне посмотреть SQL Server Azure и его базы данных

Согласно справочной документации:

  • При настройке нового экземпляра DevOps Server, яselected " Это новое развертывание сервера DevOps Azure "
  • На странице базы данных мастера настройки укажите экземпляр сервера базы данных SQL Azure, обычно в форме «SQLInstanceName.database.windows.net "

Пожалуйста, дайте мне знать, если я могу еще что-нибудь сделать, чтобы Мастер настройки сервера Devops увидел мой SQL Server и базы данных Azure

PS Я пытаюсьзаставить это работать в правительстве Azure (MAG), если это изменит возможность ...

Ошибка при попытке программного подключения к базе данных SQL с помощью следующего сценария Powershell:

# 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)

enter image description here

Ответы [ 4 ]

0 голосов
/ 19 февраля 2019

Я согласен, что вы должны выполнить тест PowerShell, чтобы проверить свой MSI.Похоже, у вас проблемы с достижением IP-адреса для получения токена доступа.Если вы пытаетесь подключиться из правительственной сети, вполне вероятно, что вы используете какой-либо тип веб-прокси-службы (Blue Coat и т. Д.), Чтобы попасть в Интернет.Вы можете обмануть прокси, эмулируя строку пользовательского агента из браузера, используя параметр -UserAgent в команде Invoke-WebRequest.

Если это не сработает, вам может потребоваться обратиться к прокси-команде для устранения проблемы.

Наконец, если вы можете успешно выполнить тестирование в PowerShell, но вы все равно получаетеошибка проверки соединения в установке DevOps, убедитесь, что выполните следующие действия:

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

Я забыл добавить пользователя в главную БД ... Как только я это сделал,все работало.Удачи.

0 голосов
/ 02 января 2019

Попробуйте подключиться к экземпляру SQL через Powershell вместо сервера Azure DevOps.

Для этого можно выполнить следующий скрипт:

# 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)

Это должно как минимум дать вам большеописательная ошибка для отладки.

0 голосов
/ 07 января 2019

Gvazzana, я также рекомендую тестировать с помощью предоставленного сценария danwkennedy, но обязательно измените database.windows.net на database.usgovcloudapi.net для правительства Azure.

Я бы внимательно следил за любыми ошибками вокругполучение токена доступа и ошибок, связанных с открытием соединения SQL.

Если ничего не выделяется, возможно ли перехватить трассировку Fiddler?

0 голосов
/ 21 декабря 2018

Попробуйте запустить ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo из баз данных как для сбора, так и для конфигурации.У меня есть PR, чтобы добавить это в документацию, и это может быть причиной вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...