Synapse SQL kullanarak verileri güvenli bir şekilde yükleme
Bu makalede COPY deyimi için güvenli kimlik doğrulama mekanizmaları vurgulanır ve örnekler sağlanır. COPY deyimi, Synapse SQL'de verileri toplu yüklemenin en esnek ve güvenli yoludur.
Desteklenen kimlik doğrulama mekanizmaları
Aşağıdaki matris, her dosya türü ve depolama hesabı için desteklenen kimlik doğrulama yöntemlerini açıklar. Bu, kaynak depolama konumu ve hata dosyası konumu için geçerlidir.
CSV | Parquet | ORC | |
---|---|---|---|
Azure blob depolama | SAS/MSI/HIZMET SORUMLUSU/ANAHTAR/AAD | SAS/ANAHTAR | SAS/ANAHTAR |
Azure Data Lake 2. Nesil | SAS/MSI/HIZMET SORUMLUSU/ANAHTAR/AAD | SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD | SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD |
1: Bu kimlik doğrulama yöntemi için dış konum yolunuzdaki .blob uç noktası (.blob.core.windows.net
) gereklidir.
2: Bu kimlik doğrulama yöntemi için dış konum yolunuzdaki .dfs uç noktası (.dfs.core.windows.net
) gereklidir.
A. Satır sonlandırıcısı LF olan depolama hesabı anahtarı (Unix stili yeni satır)
--Note when specifying the column list, input field numbers start from 1
COPY INTO target_table (Col_one default 'myStringDefault' 1, Col_two default 1 3)
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
FILE_TYPE = 'CSV'
,CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<Your_Account_Key>')
--CREDENTIAL should look something like this:
--CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<secret>'),
,ROWTERMINATOR='0x0A' --0x0A specifies to use the Line Feed character (Unix based systems)
)
Önemli
- Satır Akışı/Yeni Satır karakterini belirtmek için onaltılık değeri (0x0A) kullanın. COPY deyiminin dizeyi
\n
olarak\r\n
yorumlayacağını unutmayın (satır başı yeni satır).
B. Satır sonlandırıcı olarak CRLF ile Paylaşılan Erişim İmzaları (SAS) (Windows stili yeni satır)
COPY INTO target_table
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
FILE_TYPE = 'CSV'
,CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='<Your_SAS_Token>')
--CREDENTIAL should look something like this:
--CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='?sv=2018-03-28&ss=bfqt&srt=sco&sp=rl&st=2016-10-17T20%3A14%3A55Z&se=2021-10-18T20%3A19%3A00Z&sig=IEoOdmeYnE9%2FKiJDSFSYsz4AkN'),
,ROWTERMINATOR='\n'-- COPY command automatically prefixes the \r character when \n (newline) is specified. This results in carriage return newline (\r\n) for Windows based systems.
)
Önemli
'\r\n' olarak yorumlanacak ve ayrıştırma sorunlarına neden olabilecek '\r\n' olarak belirtmeyin ROWTERMINATOR
. \n (yeni satır) belirtildiğinde COPY komutu \r karakterine otomatik olarak ön ek ekler. Bu, Windows tabanlı sistemler için satır başı yeni satır (\r\n) ile sonuçlar.
C. Yönetilen Kimlik
Yönetilen Kimlik kimlik doğrulaması, depolama hesabınız bir sanal ağa bağlı olduğunda gereklidir.
Önkoşullar
- Azure PowerShell'i yükleyin. Bkz. PowerShell'i yükleme.
- Genel amaçlı v1 veya blob depolama hesabınız varsa, önce genel amaçlı v2'ye yükseltmeniz gerekir. Genel amaçlı v2 depolama hesabına yükseltme konusuna bakın.
- Azure Depolama hesabı Güvenlik duvarları ve Sanal ağlar ayarları menüsünde Güvenilen Microsoft hizmetleri bu depolama hesabına erişmesine izin ver seçeneğinin açık olması gerekir. Bkz. Azure Depolama güvenlik duvarlarını ve sanal ağları yapılandırma.
Adımlar
Tek başına ayrılmış bir SQL havuzunuz varsa PowerShell kullanarak SQL sunucunuzu Microsoft Entra ID'ye kaydedin:
Connect-AzAccount Select-AzSubscription -SubscriptionId <subscriptionId> Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
Synapse çalışma alanı içindeki ayrılmış SQL havuzları için bu adım gerekli değildir. Çalışma alanının sistem tarafından atanan yönetilen kimliği (SA-MI), Synapse Yöneticisi rolünün bir üyesidir ve bu nedenle çalışma alanının ayrılmış SQL havuzlarında yükseltilmiş ayrıcalıklara sahiptir.
Genel amaçlı v2 Depolama Hesabı oluşturun. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.
Not
- Genel amaçlı v1 veya blob depolama hesabınız varsa, önce v2'ye yükseltmeniz gerekir. Daha fazla bilgi edinmek için bkz. Genel amaçlı v2 depolama hesabına yükseltme.
- Azure Data Lake Storage 2. Nesil ile ilgili bilinen sorunlar için bkz. Azure Data Lake Storage 2. Nesil ile ilgili bilinen sorunlar.
Depolama hesabınızın altında Erişim denetimi (IAM) öğesini seçin.
Ekle>Rol ataması ekle seçeneğini belirleyerek Rol ataması ekle sayfasını açın.
Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Ayar Value Role Depolama Blobu Veri Katılımcısı Şu kişiye erişim ata: SERVICEPRINCIPAL Üyeler Microsoft Entra ID ile kaydettiğiniz ayrılmış SQL havuzunuzu barındıran sunucu veya çalışma alanı Not
Bu adımı yalnızca Sahip ayrıcalığına sahip üyeler gerçekleştirebilir. Çeşitli Azure yerleşik rolleri için bkz . Azure yerleşik rolleri.
Önemli
Depolama Blobu Veri Sahibi, Katkıda Bulunanı veya Okuyucu Azure rolünü belirtin. Bu roller, Sahip, Katkıda Bulunan ve Okuyucu'nun Azure yerleşik rollerinden farklıdır.
Artık "Yönetilen Kimlik" öğesini belirterek COPY deyimini çalıştırabilirsiniz:
COPY INTO dbo.target_table FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt' WITH ( FILE_TYPE = 'CSV', CREDENTIAL = (IDENTITY = 'Managed Identity'), )
D. Microsoft Entra doğrulaması
Adımlar
Depolama hesabınızın altında Erişim denetimi (IAM) öğesini seçin.
Ekle>Rol ataması ekle seçeneğini belirleyerek Rol ataması ekle sayfasını açın.
Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Ayar Value Role Depolama Blobu Veri Sahibi, Katkıda Bulunanı veya Okuyucusu Şu kişiye erişim ata: KULLANICI Üyeler Microsoft Entra kullanıcısı Önemli
Depolama Blobu Veri Sahibi, Katkıda Bulunanı veya Okuyucu Azure rolünü belirtin. Bu roller, Sahip, Katkıda Bulunan ve Okuyucu'nun Azure yerleşik rollerinden farklıdır.
Microsoft Entra kimlik doğrulamayı yapılandırın. Bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.
Artık herhangi bir kimlik bilgisi belirtmeden COPY deyimini çalıştırabileceğiniz Active Directory kullanarak SQL havuzunuza bağlanın:
COPY INTO dbo.target_table FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt' WITH ( FILE_TYPE = 'CSV' )
E. Hizmet Sorumlusu Kimlik Doğrulaması
Adımlar
Bir Microsoft Entra uygulaması oluşturun.
Uygulama kimliğini alın.
Depolama hesabınızdaki Microsoft Entra uygulamanıza okuma, yazma ve yürütme izinleri atayın.
Artık COPY deyimini çalıştırabilirsiniz:
COPY INTO dbo.target_table FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder0/*.txt' WITH ( FILE_TYPE = 'CSV' ,CREDENTIAL=(IDENTITY= '<application_ID>@<OAuth_2.0_Token_EndPoint>' , SECRET= '<authentication_key>') --CREDENTIAL should look something like this: --,CREDENTIAL=(IDENTITY= '92761aac-12a9-4ec3-89b8-7149aef4c35b@https://login.microsoftonline.com/72f714bf-86f1-41af-91ab-2d7cd011db47/oauth2/token', SECRET='juXi12sZ6gse]woKQNgqwSywYv]7A.M') )
Önemli
OAuth 2.0 belirteç uç noktasının V1 sürümünü kullanma
Sonraki adımlar
- Ayrıntılı söz dizimi için COPY deyimi makale makalesine bakın
- En iyi yöntemleri yüklemek için veri yüklemeye genel bakış makalesine bakın