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

CRM Veritabanı SQL Server Enterprise'dan Standart'a geçerken hata veriyor

CRM veritabanını SQL Server Enterprise Edition'dan Standart Edition'a taşıdığınuzda aşağıdaki gibi bir hata alırsınız:

Database ‘Org_MSCRM’ cannot be started in this edition of SQL Server because it contains a partition function ‘AuditPFN’. Only Enterprise edition of SQL Server supports partitioning.

bu hatanın çözümü ise çok basittir. Veritabanını taşımadan önce http://support.microsoft.com/kb/2567984 makalesinde yazılan scripti çalıştırmanız yeterli olacaktır. Daha sonra taşıma işlemini başlatabilirsiniz.

 

IF EXISTS (SELECT name FROM sys.partition_schemes WHERE name='AuditPScheme')
BEGIN
 SELECT 
  CASE WHEN ind.type != 1 
   THEN 
    'DROP INDEX [dbo].[AuditBase].' + QUOTENAME(ind.name) + ' ' 
   ELSE ' ' 
  END + 
  'CREATE ' + CASE is_unique WHEN 1 THEN 'UNIQUE ' ELSE '' END  +
  ind.type_desc + ' INDEX ' + QUOTENAME(ind.name  COLLATE SQL_Latin1_General_CP1_CI_AS )  + ' ON [dbo].' +  QUOTENAME(OBJECT_NAME(object_id)) + ' (' +
   
  REVERSE(SUBSTRING(REVERSE((
   SELECT name + CASE WHEN sc.is_descending_key = 1 THEN ' DESC' ELSE ' ASC' END + ','
   FROM
    sys.index_columns sc
    JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id
   WHERE
    OBJECT_NAME(sc.object_id) = 'AuditBase' AND
    sc.object_id = ind.object_id AND
    sc.index_id = ind.index_id
   ORDER BY index_column_id ASC
   FOR XML PATH('')
        )), 2, 8000)) + ')' +
  CASE WHEN ind.type = 1 
   THEN 
    ' WITH (DROP_EXISTING = ON) ON [PRIMARY]' 
   ELSE 
    ' ' 
  END  as Script 
 INTO #indexesScript
 FROM sys.indexes ind
 JOIN sys.partition_schemes ps on ind.data_space_id=ps.data_space_id 
 WHERE
  OBJECT_NAME(object_id) = 'AuditBase'
  AND ps.name = 'AuditPScheme' 
  AND is_unique_constraint = 0 
 SELECT * FROM #indexesScript 
 
 DECLARE @recreateScript nvarchar(max)
 DECLARE indScript CURSOR FOR
 SELECT Script FROM #indexesScript
 OPEN indScript
 FETCH NEXT FROM indScript INTO @recreateScript
 
 WHILE @@FETCH_STATUS = 0   
 BEGIN   
  BEGIN TRANSACTION t1
  Execute sp_executesql @recreateScript
  
  IF @@ERROR > 0
  BEGIN 
   ROLLBACK TRAN t1
   declare @message varchar(max)
   set @message = 'Audit history recreate index failed. SQL: ' + @recreateScript 
      RAISERROR (@message, 10,1)
  END
  ELSE
  BEGIN
   COMMIT TRAN
  END
  FETCH NEXT FROM indScript INTO @recreateScript   
 END   
 DROP PARTITION SCHEME AuditPScheme
 DROP PARTITION FUNCTION AuditPFN
  
 CLOSE indScript   
 DEALLOCATE indScript 
 DROP TABLE #indexesScript
END

 

Microsoft'tan Küçük İşletmelere WebsiteSpark

Microsoft WebsiteSpark programı Türkiye'de de duyuruldu! 10 kişiye kadar çalışanı olan ve ASP.NET, Silverlight, Sharepoint, PHP gibi teknolojilerle web uygulamaları geliştiren şirketlere 3 yıl süre ile ücretsiz yazılımlar sağlıyor.

•3 adet Visual Studio 2008 Professional Edition Lisansı
•1 adet Expression Studio 3 lisansı (Expression Blend, Sketchflow ve Web!)
•Ayrıca 2 adet Expression Web 3 lisansı.
•Windows Web Server 2008 R2 4 işlemci lisansı
•SQL Server 2008 Web Edition 4 işlemci lisansı
•DotNetPanel yönetim paneli

Daha da güzeli var! SQL ve Windows Server lisanslarını isterseniz yayın ortamında da kullanabiliyorsunuz. Yani lisansnlar sadece geliştirme ortamı için değil bir hosting sağlayıcıdan alacağınız dedicated sunucunuza bu lisansları kurup uygulamanızı canlı yayına da alabilirsiniz. Tüm bunların yanında Microsoft Partner'ları gibi;

•Firma başına iki teknik destek hakkı.
•Microsoft’un web şirketleri ekosistemindeki iş ortakları, müşterileri ve tamamlayıcı servisleri ve teknolojilerinden oluşan topluluğa erişim hakkı.    
•MSDN üzerindeki teknik bilgi ve danışmanlık sunan tartışma gruplarına sınırsız erişim.
hizmetlerinden de WebsiteSpark üyesi kuruluşlar faydalanabiliyor.

Başvuru için hemen http://www.microsoft.com/web/websitespark/ adresini ziyaret edebilirsiniz.

3 yıl sonra ne olacak?
Üç yılın sonunda eğer programdan ayrılmak isterseniz 100$'lık bir ödeme yapmanız gerekiyor. Fakat tahmin etmiyorum ki kimse ayrılsın çünkü bu üç senede yayında bile kullanabileceğiniz ücretsiz lisanslar ile çoktan firmanızı kuvvetli bir şekilde ayağa kaldırmış olmanız mümkün. Bu durumda da normal yöntemlerle yıllık 999$ vererek tüm bu lisansların development ortamında kullanılabilecek olanlarını alabilirsiniz ve yayın tarafı için de yine yıllık 199$ ile 1 adet Windows Web Server ve 1 adet SQL Server Web edition edinebilirsiniz. Kişisel kanaatimi sorarsanız bu rakamlar bile bir yazılım şirketinin masrafları arasında en ufak kalemleri oluşturacaktır.

Spark programları süper!
Microsoft bundan önce de öğrencilere ücretsiz lisans sağlayan DreamSpark ve yazılım üretimi yapan şirketlere ücretsiz lisans sağlayan BizSpark ile güzel bir seriyi başlatmıştı. Bu serinin WebsiteSpark ile devam etmesi gerçekten muhteşem. Artık bir yazılım şirketi kurmak veya bu ekonomik krizde şirketi tekrar ayağa kaldırmak, lisans dertleriyle uğraşmamak çok daha rahat.

Kaynak
http://daron.yondem.com/tr/PermaLink.aspx?guid=7132de37-7259-4459-9051-9edd1dcb12f3