cub-e.net

just coding...

Azure Export Service ile SQL Server arasinda yasanan DB Link hatasinin cozumu

Data Export Servisi, Dynamics 365 verilerini bir Microsoft Azure aboneliğinde Microsoft Azure SQL Veritabanına kopyalayabilen  bir eklenti hizmetidir. Desteklenen hedef yerler Microsoft Azure SQL Veritabanı ve Microsoft Azure sanal makinelerinde Microsoft Azure SQL Server'dır. Data Export, başlangıçta tüm Dynamics 365 şemasını ve verilerini akıllı bir şekilde senkronize eder ve ardından Microsoft Dynamics 365 (çevrimiçi) sistemindeki değişiklikler (delta değişiklikleri) gibi sürekli olarak senkronize olur.

Bu servis hizmetinden yararlanabilmeniz icin asagidaki scripti Azure SQL Server ya da Sanal Makinadaki SQL Server bilgisi ile birlikte Dynamics 365 Hizmetinisin bilgilerini de icercek sekilde doldurup calistirmaxiz gerekmekte.

Data Export Servisinin nasıl yapilandiracagi ile ilgili bilgiye su adresten ulaşabilirsiniz : https://technet.microsoft.com/en-us/library/mt744592.aspx 

# -------------------------------------------------------------------------------- #

#  Provide the value for the following parameters before executing the script

$subscriptionId #burasi belirtilmeli#

$keyvaultName #burasi belirtilmeli#'

 $secretName #burasi belirtilmeli#'

 $resourceGroupName #burasi belirtilmeli#'

$location #burasi belirtilmeli#'

$connectionString #burasi belirtilmeli#'

$organizationIdList #burasi belirtilmeli#'

$tenantId #burasi belirtilmeli#'

 

# -------------------------------------------------------------------------------- #

 

# Login to Azure account, select subscription and tenant Id

Login-AzureRmAccount

Set-AzureRmContext -TenantId $tenantId -SubscriptionId$subscriptionId

 

# Create new resource group if not exists.

$rgAvail Get-AzureRmResourceGroup -Name $resourceGroupName-Location $location -ErrorAction SilentlyContinue

if(!$rgAvail){

    New-AzureRmResourceGroup -Name $resourceGroupName-Location $location

}

 

# Create new key vault if not exists.

$kvAvail Get-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName$resourceGroupName -ErrorAction SilentlyContinue

if(!$kvAvail){

    New-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName$resourceGroupName -Location $location

    # Wait few seconds for DNS entry to propagate

    Start-Sleep -Seconds15

}

 

# Create tags to store allowed set of Organizations.

$secretTags =@{}

foreach($orgId in $organizationIdList.Split(',')) {

    $secretTags.Add($orgId.Trim()$tenantId)

}

 

# Add or update a secret to key vault.

$secretVaule ConvertTo-SecureString $connectionString -AsPlainText -Force

$secret Set-AzureKeyVaultSecret-VaultName $keyvaultName -Name $secretName -SecretValue$secretVaule -Tags $secretTags

 

# Authorize application to access key vault.

$servicePrincipal 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'

Set-AzureRmKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName$servicePrincipal -PermissionsToSecrets get

 

# Display secret url.

Write-Host "Connection key vault URL is "$secret.id.TrimEnd($secret.Version)""  


Benim değinmek istediğim konu ise bundan farklı. Bir sekilde bu hizmeti aktif hale getirdini ama burada oluşturulan verilere DB Link mantigi içerisinde ulaşmak istediğinizde;


"OLE DB provider "SQLNCLI11" for linked server "#########.DATABASE.WINDOWS.NET" returned message "Unspecified error". Msg 40515, Level 16, State 2, Line 1 Reference to database and/or server name in 'AdventureWorks2012.sys.sp_tables_info_90_rowset_64' is not supported in this version of SQL Server."


ya da 


"Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc) Reference to database and/or server name in 'AdventureWorks2012.sys.sp_tables_rowset2' is not supported in this version of SQL Server. (Microsoft SQL Server, Error: 40515)"


seklinde hatalar ile karsılaşabilirsiniz. Iste bu sorunu çözmek icin mevcut DB Link baglantisini silmeniz ve asagidaki scripti kullanarak yeniden oluşturmanız gerekmekte. Bu islemi yaptiginizda sorun çözülecektir.


EXECsp_addlinkedserver
@server=
'PROD',
@srvproduct=
'',    
@provider=
'sqlncli',
@datasrc=
'azureserver.database.windows.net',
@location=
'',
@provstr=
'',
@catalog=
'database name'

EXECsp_addlinkedsrvlogin 
@rmtsrvname = 
'PROD',
@useself = 
'false',
@rmtuser = 
'Azure login',
@rmtpassword = 
'password'

EXECsp_serveroption 'PROD','rpc out', true

Loading