إدارة Azure Cosmos DB لموارد NoSQL باستخدام PowerShell

ينطبق على: NoSQL

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

إشعار

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

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

إشعار

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

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

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

هام

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

حسابات Azure Cosmos DB

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

إنشاء حساب Azure Cosmos DB

ينشئ هذا الأمر حساب قاعدة بيانات 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 لنشر حساب Azure Cosmos DB فيها. والتي يجب أن تكون مُنشأة بالفعل.
  • $locations هي المناطق المُنشأة من أجل حساب قاعدة البيانات، وحساب منطقة البيانات مع FailoverPriority 0 والتي هي منطقة الكتابة.
  • $accountName اسم حساب Azure Cosmos DB. والذي يجب أن يكون فريداً، ومكتوباً بحروف صغيرة، وتشمل فقط الأبجدية الرقمية ورموز '-'، وبطول يتراوح بين 3 - 31 حرف.
  • $apiKind نوع حساب Azure Cosmos DB المراد إنشاؤه. لمزيد من المعلومات، راجع واجهات برمجة التطبيقات في Azure Cosmos DB.
  • $consistencyPolicy، $maxStalenessIntervalو، ومستوى $maxStalenessPrefix التناسق الافتراضي والإعدادات لحساب Azure Cosmos DB. للحصول على مزيد من المعلومات، يمكنك الاطلاع على مستويات تناسق البيانات القابلة للضبط في خدمة Azure Cosmos DB.

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

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

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

$resourceGroupName = "myResourceGroup"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName

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

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

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

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName

تحديث حساب Azure Cosmos DB

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

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

إشعار

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

إشعار

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

تلميح

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

# 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 Azure 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 DB

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

# First disable service-managed failover - cannot have both service-managed
# 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 DB

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

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

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

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

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

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

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

تمكين تجاوز الفشل المُدار بواسطة الخدمة

يعين الأمر التالي حساب Azure 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 service-managed failover
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableAutomaticFailover:$enableAutomaticFailover

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

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

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

تنبيه

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

$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 DB. لن يؤدي أي تغيير آخر في الأولوية إلى حدوث تجاوز للفشل.

إشعار

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

$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

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