Azure SQL veritabanını farklı bir aboneliğe ve farklı tenant’a kopyalama
Bu yazımda Azure SQL veritabanınızı farklı bir abonelik ve farklı kiracı (Microsoft Entra) üzerindeki bir sunucudan diğerine kopyalamak için gereken adımları sizlerle paylaşacağım. Genellikle, farklı ortamlar için farklı abonelikleriniz ve tenantlar olduğunda (örneğin geliştirci veya test-arge veritabanınızın yeni ve güncel bir kopyasıyla yenilemek istediğinizde) bu en iyi çözümlerdendir.
1. Her iki sunucunun güvenlik duvarı da birbirlerinin IP’sinden gelen bağlantıya izin verecek şekilde yapılandırılmalıdır:
Public erişimi etkinleştirdiğinizden ve IP’mi hem kaynağa hem de hedefe eklediğinizden emin olun:
2. IP adresimizi SSMS ve bağlantımı kullanarak görmek için aşğidaki SQL query kullanalim.
SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID;
3. Kaynak sunucuda ve ana veritabanında oturum açmak için kullanıcı oluşturmak için bu queriyi kullanabiliriz :
CREATE LOGIN testcopyuser WITH PASSWORD = 'T@stCopyUser1'
GO
CREATE USER testcopyuser FOR LOGIN testcopyuser WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER testcopyuser;
4. Kaynak Sunucu ve kullanıcı veritabanında, kaynak veritabanında kullanıcıyı oluşturup ve veritabanına dbowner izni vermeliyiz.
CREATE USER testcopyuser FOR LOGIN testcopyuser WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE db_owner ADD MEMBER testcopyuser;
5. Kaynak sunucuda ve ana veritabanında: “testcopyuser” kullanıcısının SID’sini bulup, sonucu hedef sunucuda kullanılacağı şekilde kopyalamamiz gerekiyor:
SELECT [sid] FROM sysusers WHERE [name] = 'testcopyuser';
6. Hedef sunucuya bağlanalım, ana veritabanında bir oturum açma adı ve kullanıcı oluşturalım, kaynak sunucudaki kullanıcıyla aynı SID’ye sahip olduğumuza emin olduktan sonra Burası çok önemli
CREATE LOGIN testcopyuser WITH PASSWORD = 'T@stCopyUser1', SID = 0x01060000000000640000000000000000BBBA2D6017A7404C8E3ABD4DF3F00935;
GO
CREATE USER testcopyuser FOR LOGIN testcopyuser WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER testcopyuser;
7. Hedef sunucuda ve ana veritabanında: Oluşturulan kullanıcıyı kullanarak veritabanı komut dosyasının kopyasını hedef sunucuda çaliştiralim:
CREATE DATABASE testdestination1
AS COPY OF trdba.test;
8. CREATE DATABASE..AS COPY OF komutunu kullanarak hedef veritabanının hizmet hedefini ve yedekleme yedekliliğini değiştirebilirsiniz: detaylara aşağidaki linkten bakabilirsiniz
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-database-transact-sql?view=azuresqldb-…
9. sys.dm_operation_status’u kullanarak işlemi izleyelim – SQL Server | Microsoft Learn ve veritabanının varlığını kontrol etmek ile ilgili detaylara bakabilirsiniz ben bunlardan yararlanıyorum:
select * from sys.dm_operation_status
Gördüğünüz gibi bitirmiş işlem
Peki işlemler tamamlandı DB ne durumda bi kontrol edelim
select name,create_date,state_desc from sys.databases where name = 'testdestination1'
Bu şekilde online ve işlemler tamamlanmış oldu DB kopyasini hizlica farkli abonelik yada tenanta kopyaladik peki başka yönemler varmi dediğini duyar gibiyim tabiki var ama ben en kolay ve hizli yönetmi seçip uyguladim diğer yöntemler ile ilgli teknik dökümanlari adreslari aşağida paylaşayim
Veritabanınızı klonlamanın diğer yolları:
İkinci seçenek:
Farklı bir Azure Active Directory kiracısı altındaki birincil abonelikten farklı bir abonelikte coğrafi ikincil oluşturabilirsiniz, bu “Abonelikler arası coğrafi çoğaltma” belgesindeki adımları dökümanı: https://docs.microsoft.com/en -us/azure/azure-sql/database/active-geo-replication-overview#cross-subs…
Özel GATEWAY için makaleyi inceleyin: Azure SQL Veritabanı – Özel uç noktalara sahip abonelikler arasında GEO Çoğaltma: Azure SQL Veritabanı – Özel uç noktalara sahip abonelikler arasında GEO Çoğaltma (microsoft.com)
Aşağıdaki öğrenme dökümanı, farklı abonelikler ve Azure Active Directory kiracıları arasında sanal ağ eşlemesinin nasıl oluşturulacağıyla ilgilidir:
VNet eşlemesi oluşturma – farklı abonelikler | Microsoft Dokümanları
URL’ye göre şunu unutmayın: Etkin coğrafi çoğaltma – Azure SQL Veritabanı | Microsoft Learn
Birincil sunucuya özel bir uç nokta üzerinden bağlanırken T-SQL kullanarak coğrafi ikincil ekleme desteklenmez . Özel bir uç nokta yapılandırılmışsa ancak genel ağ erişimine izin veriliyorsa, birincil sunucuya genel bir IP adresinden bağlanıldığında coğrafi ikincil eklenmesi desteklenir. Bir coğrafi ikincil eklendiğinde genel ağ erişimi reddedilebilir .
Ayrıca, farklı bir Microsoft Entra kiracısındaki mantıksal sunucuda coğrafi ikincil oluşturma , birincil veya ikincil mantıksal sunucuda yalnızca Microsoft Entra kimlik doğrulaması etkinleştirildiğinde desteklenmez .”
Üçüncü seçenek:
Bacpac dosyasını import/export aktarmak için Azure VM’de SQLpackage aracını kullanmak
URL’ye göre: https://learn.microsoft.com/en-us/sql/tools/sqlpackage/troubleshooting-issues-and- Performance-with-s…
Aşağıdaki ipuçları, bir Azure sanal makinesinden (VM) Azure SQL Veritabanına yönelik içe veya dışa aktarma işleminin çalıştırılmasına özeldir:
- En iyi performans için İş Açısından Kritik veya Premium katman veritabanını kullanın.
- VM’de SSD depolamayı kullanın ve bacpac’ın sıkıştırmasını açmak için yeterli alan olduğundan emin olun.
- SqlPackage’i veritabanıyla aynı bölgedeki bir VM’den yürütün.
- VM’de hızlandırılmış ağı etkinleştirin.
SQLpackage.exe yardımcı programı hakkında daha fazla bilgi için:
SqlPackage.exe – SQL Sunucusu | Microsoft Dokümanları
SqlPackage.exe’nin son yayımlanan sürümlerini yüklemek için bağlantıyı takip edebilirsiniz: https://docs.microsoft.com/en-us/sql/tools/release-notes-sqlpackage?view=sql-server-ver15
Eline sağlık.