إدارة موارد Azure Cosmos DB Core (SQL) API باستخدام PowerShell

ينطبق على: واجهة برمجة تطبيقات SQL

يصف الدليل التالي كيفية استخدام PowerShell في البرنامج النصي وأتمتة إدارة موارد Azure Cosmos DB Core (SQL) API بما في ذلك حساب Cosmos وقاعدة البيانات والحاوية ومعدل النقل. بالنسبة لأوامر PowerShell cmdlets لواجهة برمجة التطبيقات الأخرى، راجع PowerShell Samples for Cassandra، وPowerShell Samples for MongoDB واجهة برمجة تطبيقات، و PowerShell Samples for Gremlin، وPowerShell Samples for Table

ملاحظة

تستخدم العينات في هذه المقالة أوامر cmdlets الخاصة بإدارة Az.CosmosDB. يمكنك الاطلاع على مرجع Api Az.CosmosDB للحصول على أحدث التغييرات.

للإدارة عبر النظام الأساسي من Azure Cosmos DB، يمكنك استخدام أوامر cmdlets Az وAz.CosmosDB مع cross-platform PowerShell، بالإضافة إلى واجهة مستوى الاستدعاء من Azure، أو واجهة برمجة تطبيقات REST، أو مدخل Azure.

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

الشروع في العمل

اتبع الإرشادات الواردة في مقالة كيفية تثبيت وتكوين Azure PowerShell من أجل معرفة كيفية تثبيت Azure PowerShell على جهاز الكمبيوتر الخاص بك.

هام

لا يمكن إعادة تسمية موارد Azure Cosmos DB لأن هذا ينتهك كيفية عمل إدارة موارد Azure مع معرّف الموارد المنتظمة.

حسابات Azure Cosmos

توضح المقاطع التالية كيفية إدارة حساب Azure Cosmos، بما في ذلك:

إنشاء حساب Azure Cosmos

ينشئ هذا الأمر حساب قاعدة بيانات Azure Cosmos DB مع مناطق متعددة، وتجاوز فشل تلقائي ونهج تناسق مقيّد.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$apiKind = "Sql"
$consistencyLevel = "BoundedStaleness"
$maxStalenessInterval = 300
$maxStalenessPrefix = 100000
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0

New-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -LocationObject $locations `
    -Name $accountName `
    -ApiKind $apiKind `
    -EnableAutomaticFailover:$true `
    -DefaultConsistencyLevel $consistencyLevel `
    -MaxStalenessIntervalInSeconds $maxStalenessInterval `
    -MaxStalenessPrefix $maxStalenessPrefix
  • $resourceGroupName هي مجموعة موارد Azure التي توزع فيها حسابات Cosmos. والتي يجب أن تكون مُنشأة بالفعل.
  • $locations هي المناطق المُنشأة من أجل حساب قاعدة البيانات، وحساب منطقة البيانات مع FailoverPriority 0 والتي هي منطقة الكتابة.
  • $accountName اسم حساب Azure Cosmos. والذي يجب أن يكون فريداً، ومكتوباً بحروف صغيرة، وتشمل فقط الأبجدية الرقمية ورموز '-'، وبطول يتراوح بين 3 - 31 حرف.
  • $apiKind نوع حساب Cosmos المراد إنشاؤه. لمزيد من المعلومات، يمكنك الاطلاع على واجهة برمجة التطبيقات الخاص بـ Azure Cosmos DB.
  • $consistencyPolicy، و$maxStalenessInterval، و$maxStalenessPrefix هم مستويات التناسق الافتراضي وإعدادات حساب Azure Cosmos. للحصول على مزيد من المعلومات، يمكنك الاطلاع على مستويات تناسق البيانات القابلة للضبط في خدمة Azure Cosmos DB.

يمكن تكوين حسابات Azure Cosmos باستخدام جدار حماية IP ونقاط نهاية خدمة الشبكة الظاهرية ونقاط النهاية الخاصة. للحصول على معلومات حول كيفية تكوين جدار حماية IP لـ Azure Cosmos DB، يمكنك الاطلاع تكوين جدار حماية IP. للحصول على معلومات حول كيفية تمكين نقاط نهاية الخدمة لـ Azure Cosmos DB، يمكنك الاطلاع على تكوين الوصول من الشبكات الظاهرية. للحصول على معلومات حول كيفية تمكين نقاط النهاية الخاصة بـ Azure Cosmos DB، يمكنك الاطلاع على تكوين الوصول من نقاط النهاية الخاصة.

سرد جميع حسابات Azure Cosmos في مجموعة الموارد

يسرد هذا الأمر جميع حسابات Azure Cosmos في مجموعة الموارد.

$resourceGroupName = "myResourceGroup"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName

الحصول على خصائص حساب Azure Cosmos

يسمح لك هذا الأمر بالحصول على خصائص حساب Azure Cosmos الحالي.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName

تحديث حساب Azure Cosmos

يسمح لك هذا الأمر بتحديث خصائص حساب قاعدة بيانات Azure Cosmos DB. تتضمن الخصائص التي يمكن تحديثها ما يلي:

  • إضافة مناطق بيانات أو إزالتها
  • تغيير نهج التناسق الافتراضي
  • تغيير عامل تصفية نطاق IP
  • تغيير تكوينات الشبكة الظاهرية
  • تمكين عمليات الكتابة متعددة المناطق

ملاحظة

لا يمكنك إضافة مناطق بيانات أو إزالتها في نفس الوقت (locations) وتغيير خصائص أخرى لحساب Azure Cosmos. يجب إجراء تعديل المناطق كعمليات منفصلة عن أي تغيير آخر للحساب.

ملاحظة

يسمح لك هذا الأمر بإضافة المناطق وإزالتها ولكن لا يسمح لك بتعديل أولويات تجاوز الفشل أو تشغيل تجاوز الفشل اليدوي. يمكنك الاطلاع على تعديل أولوية تجاوز الفشل وتشغيل تجاوز الفشل اليدوي.

تلميح

عند إضافة منطقة جديدة، يجب نسخ جميع البيانات بالكامل وتثبيتها في المنطقة الجديدة قبل وضع علامة على المنطقة على أنها متوفرة. يعتمد مقدار الوقت الذي تستغرقه هذه العملية على مقدار البيانات المخزنة داخل الحساب. إذا كانت هناك عملية تحجيم معدل النقل غير المتزامن قيد التقدم، فستقف عملية زيادة معدلات النقل مؤقتاً وستُستأنف تلقائياً عند اكتمال عملية إضافة / إزالة المنطقة.

# Create account with two regions
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$apiKind = "Sql"
$consistencyLevel = "Session"
$enableAutomaticFailover = $true
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0

# Create the Cosmos DB account
New-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -LocationObject $locations `
    -Name $accountName `
    -ApiKind $apiKind `
    -EnableAutomaticFailover:$enableAutomaticFailover `
    -DefaultConsistencyLevel $consistencyLevel

# Add a region to the account
$locationObject2 = @()
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "South Central US" -FailoverPriority 2 -IsZoneRedundant 0

Update-AzCosmosDBAccountRegion `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -LocationObject $locationObject2

Write-Host "Update-AzCosmosDBAccountRegion returns before the region update is complete."
Write-Host "Check account in Azure portal or using Get-AzCosmosDBAccount for region status."
Write-Host "When region was added, press any key to continue."
$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL
$HOST.UI.RawUI.Flushinputbuffer()

# Remove West US region from the account
$locationObject3 = @()
$locationObject3 += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locationObject3 += New-AzCosmosDBLocationObject -LocationName "South Central US" -FailoverPriority 1 -IsZoneRedundant 0

Update-AzCosmosDBAccountRegion `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -LocationObject $locationObject3

Write-Host "Update-AzCosmosDBAccountRegion returns before the region update is complete."
Write-Host "Check account in Azure portal or using Get-AzCosmosDBAccount for region status."

تمكين مناطق كتابة متعددة لحساب Azure Cosmos

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$enableAutomaticFailover = $false
$enableMultiMaster = $true

# First disable automatic failover - cannot have both automatic
# failover and multi-region writes on an account
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableAutomaticFailover:$enableAutomaticFailover

# Now enable multi-region writes
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableMultipleWriteLocations:$enableMultiMaster

حذف حساب Azure Cosmos

يحذف هذا الأمر حساب Azure Cosmos الحالي.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Remove-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -PassThru:$true

تحديث علامات حساب Azure Cosmos

يُعين هذا الأمر علامات مورد Azure لحساب Azure Cosmos. يمكن تعيين العلامات عند إنشاء الحساب باستخدام New-AzCosmosDBAccount وكذلك عند تحديث الحساب باستخدام Update-AzCosmosDBAccount.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$tags = @{dept = "Finance"; environment = "Production";}

Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Tag $tags

قائمة مفاتيح الحساب

عند إنشاء حساب Azure Cosmos، تنشئ الخدمة مفتاحي وصول أساسيين يمكن استخدامهما للمصادقة عند الوصول إلى حساب Azure Cosmos. يُنشئ، أيضاً، مفاتيح للقراءة فقط للمصادقة على عمليات القراءة فقط. يتيح لك Azure Cosmos DB إعادة إنشاء مفتاح واحد وتدويره في كل مرة دون انقطاع في حساب Azure Cosmos الخاص بك، من خلال توفير مفتاحين اختصار. تحتوي حسابات Cosmos DB على مفتاحي قراءة وكتابة (أساسي وثانوي) ومفتاحين للقراءة فقط (أساسي وثانوي).

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Type "Keys"

سرد سلاسل الاتصال

يسترد الأمر التالي سلاسل الاتصال لتوصيل التطبيقات بحساب Cosmos DB.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Type "ConnectionStrings"

إعادة إنشاء مفاتيح الحساب

يجب إعادة إنشاء مفاتيح الاختصار إلى حساب Azure Cosmos بشكل دوري للمساعدة في الحفاظ على أمان الاتصالات. يُعيّن مفاتيح اختصار أساسية وثانوية في الحساب. يسمح هذا للعملاء بالحفاظ على الوصول أثناء إعادة إنشاء مفتاح واحد في كل مرة. هناك أربعة أنواع من المفاتيح لحساب Azure Cosmos (أساسية، وثانوية، وأساسية للقراءة فقط، وثانوية للقراءة فقط)

$resourceGroupName = "myResourceGroup" # Resource Group must already exist
$accountName = "mycosmosaccount" # Must be all lower case
$keyKind = "primary" # Other key kinds: secondary, primaryReadonly, secondaryReadonly

New-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -KeyKind $keyKind

تمكين تجاوز الفشل التلقائي

يُعيّن الأمر التالي بتعيين حساب Cosmos DB لتجاوز الفشل تلقائياً إلى منطقته الثانوية في حالة عدم توفر المنطقة الأساسية.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$enableAutomaticFailover = $true
$enableMultiMaster = $false

# First disable multi-region writes - cannot have both automatic
# failover and multi-region writes on an account
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableMultipleWriteLocations:$enableMultiMaster

# Now enable automatic failover
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableAutomaticFailover:$enableAutomaticFailover

تعديل أولوية تجاوز الفشل

بالنسبة للحسابات التي تم تكوينها باستخدام Automatic Failover، يمكنك تغيير الترتيب الذي سيقوم به Cosmos بترقية النسخ المتماثلة الثانوية إلى الأساسي في حالة عدم توفر النسخة الأساسية.

على سبيل المثال أدناه، يمكنك الافتراض أن أولوية تجاوز الفشل الحالية هي West US = 0، وEast US = 1، وSouth Central US = 2. سيقوم الأمر بتغيير هذا إلى West US = 0، وSouth Central US = 1، وEast US = 2.

تنبيه

سيؤدي تغيير الموقع إلى failoverPriority=0 حدوث تجاوز فشل يدوي لحساب Azure Cosmos. لن تؤدي أي تغييرات أولوية أخرى إلى تجاوز الفشل.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$locations = @("West US", "South Central US", "East US") # Regions ordered by UPDATED failover priority

Update-AzCosmosDBAccountFailoverPriority `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -FailoverPolicy $locations

تشغيل تجاوز الفشل اليدوي

بالنسبة للحسابات التي كُوّنت باستخدام "تجاوز الفشل اليدوي"، يمكنك تجاوز الفشل وترقية أي نسخة متماثلة ثانوية إلى النسخة الأساسية عن طريق التعديل إلى failoverPriority=0. يمكن استخدام هذه العملية لبدء تدريب على التعافي من الكوارث لاختبار تخطيط التعافي من الكوارث.

على سبيل المثال أدناه، يمكنك الافتراض أن الحساب لديه أولوية تجاوز الفشل حالية من West US = 0 وEast US = 1 وعمليات عكس المناطق.

تنبيه

سيؤدي تغيير locationName لـ failoverPriority=0 إلى تشغيل تجاوز فشل يدوي لحساب Azure Cosmos. لن يؤدي أي تغيير آخر في الأولوية إلى حدوث تجاوز للفشل.

ملاحظة

إذا أجريت عملية تجاوز الفشل اليدوي أثناء عملية تحجيم سرعة نقل غير متزامنة قيد التقدم، فستقف عملية زيادة معدلات النقل مؤقتاً. سيتم استئنافها تلقائياً عند اكتمال عملية تجاوز الفشل.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$locations = @("East US", "West US") # Regions ordered by UPDATED failover priority

Update-AzCosmosDBAccountFailoverPriority `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -FailoverPolicy $locations

قائمة تأمين الموارد على حساب Azure Cosmos DB

يمكن وضع تأمين الموارد على موارد Azure Cosmos DB بما في ذلك قواعد البيانات والمجموعات. يوضح المثال أدناه كيفية سرد جميع تأمينات موارد Azure على حساب Azure Cosmos DB.

$resourceGroupName = "myResourceGroup"
$resourceTypeAccount = "Microsoft.DocumentDB/databaseAccounts"
$accountName = "mycosmosaccount"

Get-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceTypeAccount `
    -ResourceName $accountName

قاعدة بيانات Azure Cosmos DB

توضح المقاطع التالية كيفية إدارة قاعدة بيانات Azure Cosmos DB، بما في ذلك:

إنشاء قاعدة بيانات في Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

New-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

إنشاء قاعدة بيانات Azure Cosmos DB مع معدل النقل المشترك

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$databaseRUs = 400

New-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName `
    -Throughput $databaseRUs

الحصول على معدل النقل لقاعدة بيانات Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlDatabaseThroughput `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

ترحيل معدل نقل قاعدة البيانات إلى مقياس تلقائي

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Invoke-AzCosmosDBSqlDatabaseThroughputMigration `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName `
    -ThroughputType Autoscale

الحصول على جميع قواعد بيانات Azure Cosmos DB في الحساب

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName

الحصول على قاعدة بيانات واحدة Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

حذف قاعدة بيانات Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Remove-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

إنشاء تأمين مورد على قاعدة بيانات Azure Cosmos DB لمنع الحذف

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$resourceName = "$accountName/$databaseName"
$lockName = "myResourceLock"
$lockLevel = "CanNotDelete"

New-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName `
    -LockLevel $lockLevel

إزالة تأمين مورد على قاعدة بيانات Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$resourceName = "$accountName/$databaseName"
$lockName = "myResourceLock"

Remove-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName

حاوية Azure Cosmos DB

توضح المقاطع التالية كيفية إدارة حاوية Azure Cosmos DB، بما في ذلك:

إنشاء حاوية Azure Cosmos DB

# Create an Azure Cosmos DB container with default indexes and throughput at 400 RU
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$throughput = 400 #minimum = 400

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -Throughput $throughput

إنشاء حاوية Azure Cosmos DB مع مقياس تلقائي

# Create an Azure Cosmos DB container with default indexes and autoscale throughput at 4000 RU
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$autoscaleMaxThroughput = 4000 #minimum = 4000

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -AutoscaleMaxThroughput $autoscaleMaxThroughput

إنشاء حاوية Azure Cosmos DB مع مفتاح قسم بحجم كبير

# Create an Azure Cosmos DB container with a large partition key value (version = 2)
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -PartitionKeyVersion 2

الحصول على معدل نقل حاوية Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Get-AzCosmosDBSqlContainerThroughput `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

ترحيل معدل نقل الحاوية إلى المقياس التلقائي

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Invoke-AzCosmosDBSqlContainerThroughputMigration `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -ThroughputType Autoscale

إنشاء حاوية Azure Cosmos DB مع نهج الفهرس المخصص

# Create a container with a custom indexing policy
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$indexPathIncluded = "/*"
$indexPathExcluded = "/myExcludedPath/*"

$includedPathIndex = New-AzCosmosDBSqlIncludedPathIndex -DataType String -Kind Range
$includedPath = New-AzCosmosDBSqlIncludedPath -Path $indexPathIncluded -Index $includedPathIndex

$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
    -IncludedPath $includedPath `
    -ExcludedPath $indexPathExcluded `
    -IndexingMode Consistent `
    -Automatic $true

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -IndexingPolicy $indexingPolicy

إنشاء حاوية Azure Cosmos DB مع إيقاف الفهرسة

# Create an Azure Cosmos DB container with no indexing
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"

$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
    -IndexingMode None

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -IndexingPolicy $indexingPolicy

إنشاء حاوية Azure Cosmos DB مع نهج مفتاح فريد وTTL

# Create a container with a unique key policy and TTL of one day
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$uniqueKeyPath = "/myUniqueKeyPath"
$ttlInSeconds = 86400 # Set this to -1 (or don't use it at all) to never expire

$uniqueKey = New-AzCosmosDBSqlUniqueKey `
    -Path $uniqueKeyPath

$uniqueKeyPolicy = New-AzCosmosDBSqlUniqueKeyPolicy `
    -UniqueKey $uniqueKey

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -UniqueKeyPolicy $uniqueKeyPolicy `
    -TtlInSeconds $ttlInSeconds

إنشاء حاوية Azure Cosmos DB مع حل التعارض

أدخل -Type "Custom" -Path ""، لكتابة جميع التعارضات إلى ملف التعارضات والتعامل معها بشكل منفصل.

# Create container with last-writer-wins conflict resolution policy
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$conflictResolutionPath = "/myResolutionPath"

$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
    -Type LastWriterWins `
    -Path $conflictResolutionPath

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -ConflictResolutionPolicy $conflictResolutionPolicy

لإنشاء نهج حل التعارض لاستخدام إجراء مخزّن، يمكنك استدعاء New-AzCosmosDBSqlConflictResolutionPolicy وإدخال المعلماّت -Type و-ConflictResolutionProcedure.

# Create container with custom conflict resolution policy using a stored procedure
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$conflictResolutionSprocName = "mysproc"

$conflictResolutionSproc = "/dbs/$databaseName/colls/$containerName/sprocs/$conflictResolutionSprocName"

$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
    -Type Custom `
    -ConflictResolutionProcedure $conflictResolutionSproc

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -ConflictResolutionPolicy $conflictResolutionPolicy

سرد جميع حاويات AZURE Cosmos DB في قاعدة البيانات

# List all Azure Cosmos DB containers in a database
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName

الحصول على حاوية واحدة Azure Cosmos DB في قاعدة بيانات

# Get a single Azure Cosmos DB container in a database
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Get-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

حذف حاوية Azure Cosmos DB

# Delete an Azure Cosmos DB container
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Remove-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

إنشاء تأمين مورد على قاعدة بيانات Azure Cosmos DB لمنع الحذف

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$resourceName = "$accountName/$databaseName/$containerName"
$lockName = "myResourceLock"
$lockLevel = "CanNotDelete"

New-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName `
    -LockLevel $lockLevel

إزالة تأمين مورد على حاوية Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$resourceName = "$accountName/$databaseName/$containerName"
$lockName = "myResourceLock"

Remove-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName

الخطوات التالية