Zdarzenia
Dołącz do wyzwania Fest umiejętności sztucznej inteligencji
8 kwi, 15 - 28 maj, 07
Wyostrz swoje umiejętności w zakresie sztucznej inteligencji i przejdź do zamiatania, aby wygrać bezpłatny egzamin certyfikacyjny
Zarejestruj się teraz!Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Aktualizacje bazy danych można wdrożyć automatycznie w bazie danych Azure SQL Database po każdej pomyślnej kompilacji.
produkt | Wymagania |
---|---|
Azure DevOps | — projekt usługi Azure DevOps. Uprawnienia: - — Aby utworzyć połączenia usług, musisz mieć rolę administratora lub twórcy dla połączeń usług. |
Najprostszym sposobem wdrożenia bazy danych jest użycie pakietu warstwy danych lub pakietu DACPAC. DACPACs umożliwiają pakowanie i wdrażanie zmian schematu i danych. Możesz utworzyć pakiet DACPAC przy użyciu Projektu bazy danych SQL w programie Visual Studio.
Zadanie wdrażania usługi Azure SQL Database jest podstawowym mechanizmem wdrażania bazy danych na platformie Azure. To zadanie, podobnie jak w przypadku innych wbudowanych zadań platformy Azure, wymaga połączenia z usługą platformy Azure jako danych wejściowych. Połączenie usługi Azure przechowuje poświadczenia do łączenia Azure Pipelines z platformą Azure.
Najprostszym sposobem rozpoczęcia pracy z tym zadaniem jest zalogowanie się jako użytkownik, który jest właścicielem zarówno organizacji usługi Azure DevOps, jak i subskrypcji platformy Azure. W takim przypadku nie trzeba ręcznie tworzyć połączenia usługi. W przeciwnym razie, aby dowiedzieć się, jak utworzyć połączenie z usługą platformy Azure, zobacz Tworzenie połączenia z usługą platformy Azure.
Aby dowiedzieć się, jak utworzyć połączenie z usługą platformy Azure, zobacz Tworzenie połączenia z usługą platformy Azure.
Aby wdrożyć pakiet DACPAC w bazie danych Azure SQL Database, użyj zadania wdrażania usługi Azure SQL Database. Dodaj następujący fragment kodu do pliku YAML:
- task: SqlAzureDacpacDeployment@1
displayName: Execute Azure SQL : DacpacTask
inputs:
azureSubscription: '<Azure service connection>'
ServerName: '<Database server name>'
DatabaseName: '<Database name>'
SqlUsername: '<SQL user name>'
SqlPassword: '<SQL user password>'
DacpacFile: '<Location of Dacpac file in $(Build.SourcesDirectory) after compilation>'
Alternatywnie możesz użyć skryptów SQL zamiast pakietu DACPAC do wdrożenia bazy danych. Poniżej znajduje się prosty skrypt SQL, który tworzy pustą bazę danych:
USE [main]
GO
IF NOT EXISTS (SELECT name FROM main.sys.databases WHERE name = N'DatabaseExample')
CREATE DATABASE [DatabaseExample]
GO
Aby uruchomić skrypty SQL z Twojego potoku, należy dodać i usunąć reguły zapory z platformy Azure. Bez tych reguł agent usługi Azure Pipelines nie może komunikować się z usługą Azure SQL Database.
Poniższy skrypt programu PowerShell tworzy reguły zapory sieciowej. Zapisz go jako SetAzureFirewallRule.ps1
i dodaj go do repozytorium:
[CmdletBinding(DefaultParameterSetName = 'None')]
param
(
[String] [Parameter(Mandatory = $true)] $ServerName,
[String] [Parameter(Mandatory = $true)] $ResourceGroupName,
[String] $FirewallRuleName = "AzureWebAppFirewall"
)
$agentIP = (New-Object net.webclient).downloadstring("https://api.ipify.org")
New-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroupName -ServerName $ServerName -FirewallRuleName $FirewallRuleName -StartIPAddress $agentIP -EndIPAddress $agentIP
Poniższy skrypt programu PowerShell usuwa reguły zapory. Zapisz go jako RemoveAzureFirewallRule.ps1
i dodaj go do repozytorium:
[CmdletBinding(DefaultParameterSetName = 'None')]
param
(
[String] [Parameter(Mandatory = $true)] $ServerName,
[String] [Parameter(Mandatory = $true)] $ResourceGroupName,
[String] $FirewallRuleName = "AzureWebAppFirewall"
)
Remove-AzSqlServerFirewallRule -ServerName $ServerName -FirewallRuleName $FirewallRuleName -ResourceGroupName $ResourceGroupName
W poniższym przykładzie przedstawiono kroki dodawania reguł zapory, wdrażania bazy danych przy użyciu skryptów SQL, a następnie usuwania reguł zapory:
variables:
AzureSubscription: '<SERVICE_CONNECTION_NAME>'
ResourceGroupName: '<RESOURCE_GROUP_NAME>'
ServerName: '<DATABASE_SERVER_NAME>'
ServerFqdn: '<DATABASE_FQDN>'
DatabaseName: '<DATABASE_NAME>'
AdminUser: '<DATABASE_USERNAME>'
AdminPassword: '<DATABASE_PASSWORD>'
SQLFile: '<LOCATION_OF_SQL_FILE_IN_$(Build.SourcesDirectory)>'
steps:
- task: AzurePowerShell@5
displayName: 'Set Azure firewall rules'
inputs:
azureSubscription: '$(AzureSubscription)'
ScriptType: filePath
ScriptPath: '$(Build.SourcesDirectory)\scripts\SetAzureFirewallRule.ps1'
ScriptArguments: '-ServerName $(ServerName) -ResourceGroupName $(ResourceGroupName)'
azurePowerShellVersion: LatestVersion
- task: PowerShell@2
inputs:
displayName: 'Install SqlServer module if not present'
targetType: 'inline'
script: |
if (-not (Get-Module -ListAvailable -Name SqlServer)) {
Install-Module -Name SqlServer -Force -AllowClobber
}
- task: PowerShell@2
displayName: 'Deploy database'
inputs:
targetType: 'inline'
script: |
Invoke-Sqlcmd -InputFile $(SQLFile) -ServerInstance $(ServerFqdn) -Database $(DatabaseName) -Username $(AdminUser) -Password $(AdminPassword)
- task: AzurePowerShell@5
displayName: 'Remove Azure firewall rules'
inputs:
azureSubscription: '$(AzureSubscription)'
ScriptType: filePath
ScriptPath: '$(Build.SourcesDirectory)\scripts\RemoveAzureFirewallRule.ps1'
ScriptArguments: '-ServerName $(ServerName) -ResourceGroupName $(ResourceGroupName)'
azurePowerShellVersion: LatestVersion
Możesz zdecydować się na wdrożenie tylko określonych kompilacji w bazie danych platformy Azure, co zapewnia większą kontrolę nad tym, które zmiany są stosowane na podstawie kryteriów, takich jak gałąź źródłowa lub stan kompilacji.
Aby to zrobić w języku YAML, możesz użyć jednej z następujących technik:
Izoluj kroki wdrażania do oddzielnego zadania i zastosuj warunek do tego zadania.
Dodaj warunek bezpośrednio do kroku.
W poniższym przykładzie pokazano, jak wdrażać tylko kompilacje z gałęzi głównej przy użyciu warunków:
- task: SqlAzureDacpacDeployment@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<Azure service connection>'
ServerName: '<Database server name>'
DatabaseName: '<Database name>'
SqlUsername: '<SQL user name>'
SqlPassword: '<SQL user password>'
DacpacFile: '<Location of Dacpac file in $(Build.SourcesDirectory) after compilation>'
Zadanie wdrażania usługi SQL Azure Dacpac może nie obejmować wszystkich akcji serwera SQL, które należy wykonać. W takich przypadkach można użyć programu PowerShell lub skryptów wiersza polecenia, aby wykonać wymagane polecenia.
W tej sekcji opisano typowe przypadki użycia wywoływania narzędziaSqlPackage.exe. Przed uruchomieniem tego narzędzia upewnij się, że używasz własnego agenta z zainstalowanym narzędziem.
Uwaga
Jeśli uruchamiasz SQLPackage z folderu, w którym jest zainstalowany, musisz poprzedzić ścieżkę prefiksem &
i ująć ją w podwójne cudzysłowy.
<Path of SQLPackage.exe> <Arguments to SQLPackage.exe>
Możesz użyć dowolnego z następujących skryptów SQL na podstawie akcji, którą chcesz wykonać:
Tworzy plik migawki bazy danych (dacpac) z działającego serwera SQL lub bazy danych Microsoft Azure SQL.
Składnia polecenia:
SqlPackage.exe /TargetFile:"<Target location of dacpac file>" /Action:Extract
/SourceServerName:"<ServerName>.database.windows.net"
/SourceDatabaseName:"<DatabaseName>" /SourceUser:"<Username>" /SourcePassword:"<Password>"
lub
SqlPackage.exe /action:Extract /tf:"<Target location of dacpac file>"
/SourceConnectionString:"Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=SSPI;Persist Security Info=False;"
Przykład:
SqlPackage.exe /TargetFile:"C:\temp\test.dacpac" /Action:Extract /SourceServerName:"DemoSqlServer.database.windows.net.placeholder"
/SourceDatabaseName:"Testdb" /SourceUser:"ajay" /SourcePassword:"SQLPassword"
Pomoc:
sqlpackage.exe /Action:Extract /?
Zdarzenia
Dołącz do wyzwania Fest umiejętności sztucznej inteligencji
8 kwi, 15 - 28 maj, 07
Wyostrz swoje umiejętności w zakresie sztucznej inteligencji i przejdź do zamiatania, aby wygrać bezpłatny egzamin certyfikacyjny
Zarejestruj się teraz!