Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:✅Microsoft Fabric'te SQL veritabanı
Doku REST API'sini kullanarak kaynakları dağıtabilir ve yönetebilir, Doku'ya SQL veritabanlarını ekleyebilirsiniz.
Bu makalede ve örnek betikte, Bir Doku SQL veritabanı dağıtmak üzere Doku REST API'sini çağırmak için PowerShell'in nasıl kullanılacağı gösterilmektedir.
Önkoşullar
- Mevcut bir Yapı kapasitesine ihtiyacınız vardır. Aksi takdirde bir Fabric deneme sürümü başlatın.
- Mevcut bir çalışma alanını kullanabilir veya yeni bir Doku çalışma alanı oluşturabilirsiniz.
- SQL veritabanı oluşturmak için çalışma alanının Yönetici veya Üye rollerinin üyesi olmanız gerekir.
-
SQLCMD'nin golang sürümünü yükleyin. Yüklemek için Windows üzerinde komutunu çalıştırın
winget install sqlcmd. Diğer işletim sistemleri için bkz. aka.ms/go-sqlcmd. - PowerShell 5.1 veya PowerShell 7.4 ve üzeri
- Az PowerShell modülü. Yüklemek için PowerShell'de komutunu çalıştırın
Install-Module az.
REST API aracılığıyla yeni bir SQL veritabanı oluşturma
Bu örnek betik, kimlik bilgilerini istemek için Connect-AzAccount, az login'ın bir takma adı olarak kullanır. REST API çağrıları için kullanılacak bir erişim belirteci almak için bu kimlik bilgilerini kullanır. SQLCMD, Connect-AzAccount'e verilen hesabın bağlamını kullanır.
Betik, oturum açan kullanıcının takma adı ve tarihten oluşan bir isimle veritabanı oluşturur. REST API şu anda herhangi bir durum döndürmediği için döngü kurmalı ve veritabanının oluşturulup oluşturulmadığını kontrol etmeliyiz. Veritabanı oluşturulduktan sonra, SQLCMD bazı nesneler oluşturmak ve sonra bunların varlığını sorgulamak için kullanılır. Son olarak veritabanını siliyoruz.
Aşağıdaki betikte <your workspace id> ifadesini Doku çalışma alanı kimliğinizle değiştirin.
Url'de bir çalışma alanının kimliğini kolayca bulabilirsiniz. Bu, tarayıcı pencerenizde iki / karakterden sonra /groups/ gelen benzersiz dizedir. Örneğin, 11aa111-a11a-1111-1abc-aa1111aaaa içinde https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.
Bu skript şunu tanımlar:
Get-AzAccessToken kullanarak bir erişim belirteci alın ve bunugüvenli bir dizgedendönüştürün. PowerShell 7 kullanıyorsanız ConvertFrom-SecureString de bir seçenektir. - Öğeleri - Öğe Oluşturma API'sinikullanarak yeni bir SQL veritabanı oluşturun.
- Fabric çalışma alanında tüm SQL veritabanlarını listeleyin.
- Nesne oluşturmak üzere bir betik çalıştırmak için SQLCMD ile veritabanına bağlanın.
- Öğeleri - Öğe Silme API'sinikullanarak veritabanını silin.
Import-Module Az.Accounts
az login
$workspaceid = '<your workspace id>'
$databaseid = $null
$headers = $null
$responseHeaders = $null
# 1. Get the access token and add it to the headers
$access_token = (Get-AzAccessToken -AsSecureString -ResourceUrl https://api.fabric.microsoft.com)
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($access_token.Token)
try {
$headers = @{
Authorization = $access_token.Type + ' ' + ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr))
}
$access_token.UserId -match('^[^@]+') | Out-Null
# 2. Create the database and wait for it to be created.
$body = @{
displayName = $matches[0] + (Get-Date -Format "MMddyyyy")
type = "SQLDatabase"
description = "Created using public api"
}
$parameters = @{
Method="Post"
Headers=$headers
ContentType="application/json"
Body=($body | ConvertTo-Json)
Uri = 'https://api.fabric.microsoft.com/v1/workspaces/' + $workspaceid + '/items'
}
Invoke-RestMethod @parameters -ErrorAction Stop
$databases = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases).value
$databaseid = $databases.Where({$_.displayName -eq $body.displayName}).id
While($databaseid -eq $null)
{
Write-Host 'Waiting on database create.'
Start-Sleep 30
$databases = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases).value
$databaseid = $databases.Where({$_.displayName -eq $body.displayName}).id
}
# 3. List all SQL databases in a Fabric workspace
Write-Host 'Listing databases in workspace.'
Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/items?type=SQlDatabase | select -ExpandProperty Value | ft
$databaseProperties = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases/$($databaseid) | select -ExpandProperty Properties)
#4. Connnect to the database and create a table
Write-Host 'Attempting to connect to the database.'
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'create table test2
(
id int
);
insert into test2 values (1);
insert into test2 values (2);
insert into test2 values (3);
select * from test2;'
#5. Delete the database
$parameters = @{
Method="Delete"
Headers=$headers
ContentType="application/json"
Body=($body | ConvertTo-Json)
Uri = 'https://api.fabric.microsoft.com/v1/workspaces/' + $workspaceid + '/items/' + $databaseid
}
Invoke-RestMethod @parameters
Write-Output 'Cleaned up:' $body.displayName
} finally {
# The following lines ensure that sensitive data is not left in memory.
$headers = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
$parameters = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}