Существует богатый API для управления экземплярами, серверами и политиками безопасности Azure в справочнике по az sql и справочных командах Azure CLI для Azure SQL. Но как мы можем просто подключиться к существующей подписке [или, по крайней мере, к строке подключения] и запустить основные команды sql? Я не нашел альтернативного API или каких-либо методов в этих существующих API для этого. Можно ли переназначить один или несколько методов, ориентированных на администратора, для выполнения общих запросов/выполнения общих команд DML?
Предпочтительно использовать существующую подписку Azure в качестве основы для подключения. Таким образом, нам не нужно получать доступ к KeyVault для паролей сервера [и URI и т. д.].
Я пробую Sqlcmd и встрою его в задачу Bash@3. Обратите внимание, что он работает с macOS и Linux.
убунту:
apt install -y install SqlCmd
Sqlcmd -S our-server.database.windows.net -d ourdb -G
Обратите внимание, что здесь нет никаких паролей: -G означает использование ActiveDirectory за кулисами с учетными данными вошедшего в систему пользователя. Это также должно быть переведено в Azure.
Это вызывает приглашение T-sql. Затем можно вызвать нужный нам оператор вставки.
Обновление В ADO логин ActiveDirectory не найден автоматически. Мне нужно будет обновить этот подход с механизмами, чтобы включить его.
Конкретное сообщение об ошибке:
Failed to authenticate the user '' in Active Directory
(Authentication option is 'ActiveDirectoryIntegrated').
Running on Azure it does need login mechanics still:
commit;'
2023-04-04T08:34:50.8668817Z Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
2023-04-04T08:34:50.8670276Z Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Failed to authenticate the user '' in Active Directory (Authentication option is 'ActiveDirectoryIntegrated').
2023-04-04T08:34:50.8671087Z Error code 0xA190; state 41360
2023-04-04T08:34:50.8671557Z Error acquiring Kerberos credentials
2023-04-04T08:34:50.8672027Z GSS status: No credentials were supplied, or the credentials were unavailable or inaccessible
2023-04-04T08:34:50.8672561Z Mechanism status: No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1001)
2023-04-04T08:34:50.8672954Z .
2023-04-04T08:34:50.8673556Z Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Timeout error [258]. .
2023-04-04T08:34:50.8676187Z Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Unable to complete login process due to delay in login response.
2023-04-04T08:34:50.8690776Z + script_out='OK
Рассмотрите возможность использования PowerShell Core и Invoke-Sqlcmd . Он поддерживает кроссплатформенность: Invoke-Sqlcmd теперь доступен с поддержкой кроссплатформенности . Посмотрите примеры подключения к Azure SQL: Подключитесь к базе данных Azure SQL . Вы можете поделиться результатами запроса с помощью команд ведения журнала: О task.setvariable
Настройте PowerShell@2 для использования PowerShell Core:
По умолчанию PowerShell v2 использует агенты PowerShell Core для Linux и Windows PowerShell для агентов Windows. Чтобы использовать последнюю версию PowerShell для агентов Windows установите для параметра pwsh значение true. Вместо этого будет использоваться PowerShell Core.
отличная информация! Я рад, что мой вопрос не был закрыт [по крайней мере], чтобы иметь возможность его прочитать! Не уверен, почему так много презрения к этому вопросу.
Обратные кавычки предназначены для фрагментов кода/CLI, а не для выделения.