Aracılığıyla paylaş


Öğretici: Azure CLI aracılığıyla DMS (klasik) kullanarak PostgreSQL'i çevrimiçi PostgreSQL için Azure Veritabanı geçirme

Önemli

Daha kolay ve verimli bir geçiş deneyimi için PostgreSQL için Azure Veritabanı'nda yeni geçiş hizmetini kullanmanızı öneririz. Bu hizmet, çeşitli kaynak ortamlarını destekleyerek süreci basitleştirir ve PostgreSQL için Azure Veritabanı'na sorunsuz bir geçiş sağlar.

Veritabanlarını şirket içi bir PostgreSQL örneğinden PostgreSQL için Azure Veritabanı'na en düşük kapalı kalma süresiyle geçirmek için Azure Veritabanı Geçiş Hizmeti'ni (DMS) kullanabilirsiniz. Başka bir deyişle, uygulamaya en az kapalı kalma süresiyle geçiş yapılabilir. Bu öğreticide, Azure Veritabanı Geçiş Hizmeti'daki çevrimiçi geçiş etkinliğini kullanarak örnek veritabanını PostgreSQL 9.6'nın şirket içi örneğinden PostgreSQL için Azure Veritabanı'a geçirirsinizDVD Rental.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • pg_dump yardımcı programını kullanarak örnek şemayı geçirin.
  • Azure Veritabanı Geçiş Hizmeti örneği oluşturma.
  • Azure Veritabanı Geçiş Hizmeti'ni kullanarak geçiş projesi oluşturma.
  • Geçişi çalıştırma.
  • Geçişi izleme.

Çevrimiçi geçiş gerçekleştirmek için Azure Veritabanı Geçiş Hizmeti kullanmak için Premium fiyatlandırma katmanını temel alan bir örnek oluşturmanız gerekir. Geçiş işlemi sırasında veri hırsızlığını önlemek için diski şifreleriz.

Önemli

En iyi geçiş deneyimi için Microsoft, hedef veritabanıyla aynı Azure bölgesinde bir Azure Veritabanı Geçiş Hizmeti örneği oluşturmanızı önerir. Verileri bölgeler veya coğrafyalar arasında taşımak, geçiş sürecini yavaşlatabilir ve hatalara neden olabilir.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakileri yapmanız gerekir:

  • PostgreSQL topluluk sürümü 9.4, 9.5, 9.6 veya 10'u indirin ve yükleyin. Kaynak PostgreSQL Sunucusu sürümü 9.4, 9.5, 9.6, 10, 11, 12 veya 13 olmalıdır. Daha fazla bilgi için bkz . Desteklenen PostgreSQL veritabanı sürümleri.

    Hedef PostgreSQL için Azure Veritabanı sürümü, şirket içi PostgreSQL sürümüne eşit veya bundan sonraki bir sürüm olmalıdır. Örneğin, PostgreSQL 9.6 yalnızca PostgreSQL için Azure Veritabanı 9.6, 10 veya 11'e geçirilebilir, ancak 9.5 PostgreSQL için Azure Veritabanı geçirilmez.

  • PostgreSQL için Azure Veritabanı - Esnek sunucuda bir örnek oluşturun.

  • ExpressRoute veya VPN kullanarak şirket içi kaynak sunucularınıza siteden siteye bağlantı sağlayan Azure Resource Manager dağıtım modelini kullanarak Azure Veritabanı Geçiş Hizmeti için Microsoft Azure Sanal Ağı oluşturun. Sanal ağ oluşturma hakkında daha fazla bilgi için , Sanal Ağ Belgeleri'ne ve özellikle adım adım ayrıntıları içeren hızlı başlangıç makalelerine bakın.

    Sanal ağ kurulumu sırasında ExpressRoute'u Microsoft ile ağ eşlemesi ile kullanıyorsanız hizmetin sağlanacağı alt ağa aşağıdaki hizmet uç noktalarını ekleyin:

    • Hedef veritabanı uç noktası (örneğin, SQL uç noktası, Azure Cosmos DB uç noktası, vb.)
    • Depolama uç noktası
    • Service Bus uç noktası

    Azure Veritabanı Geçiş Hizmeti'nin İnternet bağlantısı olmadığından bu yapılandırma gereklidir.

  • Sanal ağ Ağ Güvenlik Grubu (NSG) kurallarınızın ServiceBus, Depolama ve AzureMonitor için ServiceTag'in 443 numaralı giden bağlantı noktasını engellemediğinden emin olun. Sanal ağ NSG trafiği filtreleme hakkında daha fazla ayrıntı için Ağ trafiğini ağ güvenlik gruplarıyla filtreleme makalesine bakın.

  • Veritabanı altyapısı erişimi için Windows Güvenlik Duvarınızı yapılandırın.

  • Azure Veritabanı Geçiş Hizmeti varsayılan olarak TCP bağlantı noktası 5432 olan postgreSQL sunucusuna erişmesine izin vermek için Windows Güvenlik Duvarınızı açın.

  • Kaynak veritabanlarınızın önünde bir güvenlik duvarı gereci kullanırken, Azure Veritabanı Geçiş Hizmeti geçiş için kaynak veritabanlarına erişmesine izin vermek için güvenlik duvarı kuralları eklemeniz gerekebilir.

  • Azure Veritabanı Geçiş Hizmeti'nin hedef veritabanlarına erişmesine izin vermek için PostgreSQL için Azure Veritabanı için sunucu düzeyinde bir güvenlik duvarı kuralı oluşturun. Azure Veritabanı Geçiş Hizmeti için kullanılan sanal ağın alt ağ aralığını belirtin.

  • CLI’yi çağırmak için iki yöntem vardır:

    • Azure portalının sağ üst köşesinde Cloud Shell düğmesini seçin:

      Azure portalında Cloud Shell düğmesinin ekran görüntüsü.

    • CLI’yi yerel olarak yükleyip çalıştırın. Bu geçiş için gereken Azure kaynaklarını yönetmek için komut satırı aracının CLI 2.18 veya üzeri sürümü gereklidir.

      CLI'yı indirmek için Azure CLI'yı yükleme makalesindeki yönergeleri izleyin. Makalede Azure CLI'yi destekleyen platformlar da listelenir.

      Linux için Windows Alt Sistemi'ni (WSL) ayarlamak için Windows 10 Yükleme Kılavuzu'ndaki yönergeleri izleyin

  • Dosyayı düzenleyip aşağıdaki parametreleri ayarlayarak kaynak sunucuda mantıksal çoğaltmayı postgresql.config etkinleştirin:

    • wal_level = logical
    • max_replication_slots = [yuva sayısı]. Önerilen ayar 5 yuva şeklindedir.
    • max_wal_senders = [eşzamanlı görev sayısı]. parametresi, max_wal_senders çalışabilecek eşzamanlı görevlerin sayısını ayarlar. Önerilen ayar 10 görevleridir.

Örnek şemayı geçirme

Tablo şemaları, dizinler ve saklı yordamlar gibi tüm veritabanı nesnelerini tamamlamak için kaynak veritabanından şema ayıklamamız ve veritabanına uygulamamız gerekir.

  1. Bir veritabanı için şema döküm dosyası oluşturmak için komutunu kullanın pg_dump -s .

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    Örneğin, dvdrental veritabanındaki bir şema dosyasının dökümünü çıkarmak için:

    pg_dump -O -h localhost -U postgres -d dvdrental -s  > dvdrentalSchema.sql
    

    pg_dump yardımcı programını kullanma hakkında daha fazla bilgi için pg-dump öğreticisindeki örneklere bakın.

  2. Hedef ortamınızda PostgreSQL için Azure Veritabanı - Esnek sunucu olan boş bir veritabanı oluşturun.

  3. Şema döküm dosyasını geri yükleyerek, şemayı oluşturduğunuz hedef veritabanına aktarın.

    psql -h hostname -U db_username -d db_name < your_schema.sql
    

    Örneğin:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental < dvdrentalSchema.sql
    

    Not

    Geçiş hizmeti, güvenilir ve sağlam bir veri geçişi sağlamak için yabancı anahtarların ve tetikleyicilerin etkinleştirilmesini ve devre dışı bırakılmasını dahili olarak işler. Sonuç olarak, hedef veritabanı şemasında herhangi bir değişiklik yapma konusunda endişelenmeniz gerekmez.

Azure CLI kullanarak DMS örneği sağlama

  1. DMS eşitleme uzantısını yükleyin:

    • Aşağıdaki komutu çalıştırarak Azure'da oturum açın:

      az login
      
    • Sorulduğunda bir web tarayıcısı açın ve cihazınızın kimliğini doğrulamak için bir kod girin. Listelenen yönergeleri uygulayın.

    • PostgreSQL çevrimiçi geçişi artık uzantıya gerek dms-preview kalmadan normal CLI paketinde (sürüm 2.18.0 ve üzeri) kullanılabilir. Uzantıyı geçmişte yüklediyseniz, aşağıdaki adımları kullanarak uzantıyı kaldırabilirsiniz:

      • Uzantının dms-preview zaten yüklü olup olmadığını denetlemek için aşağıdaki komutu çalıştırın:

        az extension list -o table
        
      • Uzantı yüklüyse dms-preview , uzantıyı kaldırmak için aşağıdaki komutu çalıştırın:

        az extension remove --name dms-preview
        
      • Uzantıyı dms-preview doğru bir şekilde kaldırdığınızdan emin olmak için aşağıdaki komutu çalıştırın ve uzantıyı dms-preview listede görmemeniz gerekir:

        az extension list -o table
        

      Önemli

      dms-preview uzantısı, Azure DMS tarafından desteklenen diğer geçiş yolları için hala gerekli olabilir. Uzantının gerekli olup olmadığını belirlemek için belirli geçiş yolunun belgelerine bakın. Bu belge, PostgreSQL'e özel olarak çevrimiçi PostgreSQL için Azure Veritabanı için uzantı gereksinimini kapsar.

    • Dilediğiniz zaman aşağıdaki komutu çalıştırarak desteklenen tüm komutları görüntüleyin:

      az dms -h
      
    • Birden çok Azure aboneliğiniz varsa, DMS hizmetinin bir örneğini sağlamak için kullanmak istediğiniz aboneliği ayarlamak üzere aşağıdaki komutu çalıştırın.

      az account set -s <SubscriptionID>
      
  2. Aşağıdaki komutu çalıştırarak bir DMS örneğini sağlayın:

    az dms create -l <location> -n <newServiceName> -g <yourResourceGroupName> --sku-name Premium_4vCores --subnet/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Network/virtualNetworks/<VirtualNetwork>/subnets/<SubnetName> –tags tagName1=tagValue1 tagWithNoValue
    

    Örneğin, aşağıdaki komut bir hizmet oluşturur. , <SubscriptionID>ve <ResourceGroupName> değerlerini geçerli değerlerle kullanın<VirtualNetwork>.

    • Konum: Doğu ABD2
    • Abonelik: <SubscriptionID>
    • Kaynak grubu adı: <ResourceGroupName>
    • DMS hizmet adı: PostgresCLI
    az dms create -l eastus2 -g <ResourceGroupName> -n PostgresCLI --subnet /subscriptions/<SubscriptionID>/resourceGroups/ERNetwork/providers/Microsoft.Network/virtualNetworks/<VirtualNetwork>/subnets/Subnet-1 --sku-name Premium_4vCores
    

    DMS hizmetinin örneğinin oluşturulması yaklaşık 10 dakika sürer.

  3. DMS aracısını Postgres pg_hba.conf dosyasına ekleyebilmek için IP adresini belirlemek için aşağıdaki komutu çalıştırın:

    az network nic list -g <ResourceGroupName> --query '[].ipConfigurations | [].privateIpAddress'
    

    Örneğin:

    az network nic list -g <resource-group> --query '[].ipConfigurations | [].privateIpAddress'
    

    Aşağıdaki adrese benzer bir sonuç almalısınız:

    [
      "172.16.136.18"
    ]
    
  4. DMS aracısının IP adresini Postgres pg_hba.conf dosyasına ekleyin.

    • DMS içinde sağlamayı bitirdikten sonra DMS IP adresini not alın.

    • Ip adresini aşağıdaki girişe pg_hba.conf benzer şekilde kaynak dosyaya ekleyin:

      host     all            all        172.16.136.18/10    md5
      host     replication    postgres   172.16.136.18/10    md5
      
  5. Ardından, aşağıdaki komutu çalıştırarak bir PostgreSQL geçiş projesi oluşturun:

    az dms project create -l <location> -g <ResourceGroupName> --service-name <yourServiceName> --source-platform PostgreSQL --target-platform AzureDbforPostgreSQL -n <newProjectName>
    

    Örneğin, aşağıdaki komut bu parametreleri kullanarak bir proje oluşturur:

    • Konum: Orta Batı ABD
    • Kaynak grubu adı: <ResourceGroupName>
    • Hizmet adı: PostgresCLI
    • Proje adı: PGMigration
    • Kaynak platform: PostgreSQL
    • Hedef platform: AzureDbForPostgreSql
    az dms project create -l westcentralus -n PGMigration -g <ResourceGroupName> --service-name PostgresCLI --source-platform PostgreSQL --target-platform AzureDbForPostgreSql
    
  6. Aşağıdaki adımları kullanarak bir PostgreSQL geçiş görevi oluşturun.

    Bu adım, bağlantı kurmak için kaynak IP, UserID ve parola, hedef IP, UserID, parola ve görev türünü kullanmayı içerir.

    • Seçeneklerin tam listesini görmek için komutu çalıştırın:

      az dms project task create -h
      

      Hem kaynak hem de hedef bağlantı için giriş parametresi, nesne listesini içeren bir json dosyasına başvurur.

      PostgreSQL bağlantıları için bağlantı JSON nesnesinin biçimi.

      {
          // if this is missing or null, you will be prompted
          "userName": "user name",
          // if this is missing or null (highly recommended) you will  be prompted
          "password": null,
          "serverName": "server name",
          // if this is missing, it will default to the 'postgres' database
          "databaseName": "database name",
          // if this is missing, it will default to 5432
          "port": 5432
      }
      

      Ayrıca json nesnelerini listeleyen bir veritabanı seçeneği json dosyası da vardır. PostgreSQL için veritabanı seçenekleri JSON nesnesinin biçimi aşağıdaki gibi gösterilir:

      [
          {
              "name": "source database",
              "target_database_name": "target database",
              "selectedTables": [
                  "schemaName1.tableName1",
                  ...n
              ]
          },
          ...n
      ]
      
    • Kaynak bağlantı json'unu oluşturmak için Not Defteri'ni açın ve aşağıdaki json dosyasını kopyalayıp dosyaya yapıştırın. Dosyayı kaynak sunucunuza göre değiştirdikten sonra C:\DMS\source.json kaydedin.

      {
          "userName": "postgres",
          "password": null,
          "serverName": "13.51.14.222",
          "databaseName": "dvdrental",
          "port": 5432
      }
      
    • Hedef bağlantı json'unu oluşturmak için Not Defteri'ni açın ve aşağıdaki json dosyasını kopyalayıp dosyaya yapıştırın. Dosyayı hedef sunucunuza göre değiştirdikten sonra C:\DMS\target.json'a kaydedin.

      {
          "userName": " dms@builddemotarget",
          "password": null,
          "serverName": " builddemotarget.postgres.database.azure.com",
          "databaseName": "inventory",
          "port": 5432
      }
      
    • Geçirecek veritabanlarının envanterini ve eşlemesini listeleyen bir veritabanı seçenekleri json dosyası oluşturun:

      • Geçirilecek tabloların listesini oluşturun veya bir SQL sorgusu kullanarak listeyi kaynak veritabanından oluşturabilirsiniz. Tablo listesini oluşturmak için örnek bir sorgu aşağıda verilmiştir. Bu sorguyu kullanıyorsanız, geçerli bir JSON dizisi yapmak için soyad adının sonundaki son virgülleri kaldırmayı unutmayın.

        SELECT FORMAT('%s,', REPLACE(FORMAT('%I.%I', schemaname, tablename), '"', '\"')) AS SelectedTables
        FROM pg_tables
        WHERE schemaname NOT IN ('pg_catalog', 'information_schema');
        
      • Kaynak ve hedef veritabanı adlarına ve geçirilecek seçili tabloların listesine sahip her veritabanı için bir giriş içeren veritabanı seçenekleri JSON dosyasını oluşturun. Diziyi doldurmak için önceki SQL sorgusunun çıkışını selectedTables kullanabilirsiniz.

        Not

        Seçili tablolar listesi boşsa, hizmet, eşleşen şema ve tablo adlarına sahip tüm geçiş tablolarını içerir.

        [
            {
                "name": "dvdrental",
                "target_database_name": "dvdrental",
                "selectedTables": [
                    "schemaName1.tableName1",
                    "schemaName1.tableName2",
                    ...
                    "schemaNameN.tableNameM"
                ]
            },
            ... n
        ]
        
    • Kaynak bağlantı, hedef bağlantı ve veritabanı seçenekleri json dosyalarını alan aşağıdaki komutu çalıştırın.

      az dms project task create -g <ResourceGroupName> --project-name PGMigration --source-connection-json c:\DMS\source.json --database-options-json C:\DMS\option.json --service-name PostgresCLI --target-connection-json c:\DMS\target.json --task-type OnlineMigration -n runnowtask
      

    Bu noktada, bir geçiş görevini başarıyla gönderdiniz.

  7. Görevin ilerleme durumunu göstermek için aşağıdaki komutları çalıştırın.

    • Genel görev durumunu kısaca görmek için:

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask
      
    • Geçiş ilerleme durumu bilgileri de dahil olmak üzere ayrıntılı görev durumunu görmek için:

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask --expand output
      
    • JMESPath sorgu biçimini yalnızca genişletilmiş çıktıdan ayıklamak migrationState için de kullanabilirsiniz:

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask --expand output --query 'properties.output[].migrationState'
      

      Çıktıda, farklı geçiş adımlarının ilerleme durumunu gösteren çeşitli parametreler vardır. Örneğin, aşağıdaki çıkışa bakın:

      {
          "output": [
              // Database Level
              {
                  "appliedChanges": 0, // Total incremental sync applied after full load
                  "cdcDeleteCounter": 0, // Total delete operation  applied after full load
                  "cdcInsertCounter": 0, // Total insert operation applied after full load
                  "cdcUpdateCounter": 0, // Total update operation applied after full load
                  "databaseName": "inventory",
                  "endedOn": null,
                  "fullLoadCompletedTables": 2, //Number of tables completed full load
                  "fullLoadErroredTables": 0, //Number of tables that contain migration error
                  "fullLoadLoadingTables": 0, //Number of tables that are in loading status
                  "fullLoadQueuedTables": 0, //Number of tables that are in queued status
                  "id": "db|inventory",
                  "incomingChanges": 0, //Number of changes after full load
                  "initializationCompleted": true,
                  "latency": 0,
                  //Status of migration task
                  "migrationState": "READY_TO_COMPLETE", //READY_TO_COMPLETE => the database is ready for cutover
                  "resultType": "DatabaseLevelOutput",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00"
              }, {
                  "databaseCount": 1,
                  "endedOn": null,
                  "id": "dd27aa3a-ed71-4bff-ab34-77db4261101c",
                  "resultType": "MigrationLevelOutput",
                  "sourceServer": "138.91.123.10",
                  "sourceVersion": "PostgreSQL",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00",
                  "state": "PENDING",
                  "targetServer": "builddemotarget.postgres.database.azure.com",
                  "targetVersion": "Azure Database for PostgreSQL"
              },
              // Table 1
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 0,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:20.740701+00:00", //Full load completed time
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:15.864552+00:00", //Full load started time
                  "fullLoadTotalRows": 10, //Number of rows loaded in full load
                  "fullLoadTotalVolumeBytes": 7056, //Volume in Bytes in full load
                  "id": "or|inventory|public|actor",
                  "lastModifiedTime": "2018-07-05T23:36:16.880174+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED", //State of migration for this table
                  "tableName": "public.catalog", //Table name
                  "totalChangesApplied": 0 //Total sync changes that applied after full load
              },
              //Table 2
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 50,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:23.963138+00:00",
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:19.302013+00:00",
                  "fullLoadTotalRows": 112,
                  "fullLoadTotalVolumeBytes": 46592,
                  "id": "or|inventory|public|address",
                  "lastModifiedTime": "2018-07-05T23:36:20.308646+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED",
                  "tableName": "public.orders",
                  "totalChangesApplied": 0
              }
          ],
          // DMS migration task state
          "state": "Running", //Running => service is still listening to any changes that might come in
          "taskType": null
      }
      

Tam geçiş görevi

Tam yükleme tamamlandığında veritabanı tam geçiş için hazırdır. Kaynak sunucunun gelen yeni işlemlerle ne kadar meşgul olduğuna bağlı olarak, tam yükleme tamamlandıktan sonra DMS görevi hala değişiklikleri uyguluyor olabilir.

Tüm verilerin yakalandığından emin olmak için kaynak ve hedef veritabanları arasındaki satır sayılarını doğrulayın. Örneğin, durum çıkışından aşağıdaki ayrıntıları doğrulayabilirsiniz:

Database Level
"migrationState": "READY_TO_COMPLETE" => Status of migration task. READY_TO_COMPLETE means database is ready for cutover
"incomingChanges": 0 => Check for a period of 5-10 minutes to ensure no new incoming changes need to be applied to the target server

Table Level (for each table)
"fullLoadTotalRows": 10    => The row count matches the initial row count of the table
"cdcDeleteCounter": 0      => Number of deletes after the full load
"cdcInsertCounter": 50     => Number of inserts after the full load
"cdcUpdateCounter": 0      => Number of updates after the full load
  1. Aşağıdaki komutu kullanarak tam veritabanı geçiş görevini gerçekleştirin:

    az dms project task cutover -h
    

    Örneğin, aşağıdaki komut 'Inventory' veritabanı için kesme işlemini başlatır:

    az dms project task cutover --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask  --object-name Inventory
    
  2. Tam geçişin ilerleme durumunu izlemek için aşağıdaki komutu çalıştırın:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask
    
  3. Veritabanı geçiş durumu Tamamlandı olarak gösterildiğinde dizileri yeniden oluşturun (varsa) ve uygulamalarınızı PostgreSQL için Azure Veritabanı'nın yeni hedef örneğine bağlayın.

Hizmet, proje, görev temizleme

Herhangi bir DMS görevini, projesini veya hizmetini iptal etmeniz ya da silmeniz gerekirse iptal işlemini aşağıdaki sırayla gerçekleştirin:

  • Çalışan tüm görevleri iptal edin
  • Görevi silin
  • Projeyi silin
  • DMS hizmetini silin
  1. Çalışan bir görevi iptal etmek için aşağıdaki komutu kullanın:

    az dms project task cancel --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask
    
  2. Çalışan bir görevi silmek için aşağıdaki komutu kullanın:

    az dms project task delete --service-name PostgresCLI --project-name PGMigration --resource-group <ResourceGroupName> --name runnowtask
    
  3. Bir projeyi silmek için aşağıdaki komutu kullanın:

    az dms project delete -n PGMigration -g <ResourceGroupName> --service-name PostgresCLI
    
  4. DMS hizmetini silmek için aşağıdaki komutu kullanın:

    az dms delete -g <ResourceGroupName> -n PostgresCLI