Implantar um serviço de mesclagem dividida para mover dados entre bancos de dados compartilhadosDeploy a split-merge service to move data between sharded databases

A ferramenta de divisão e mesclagem permite mover dados entre bancos de dados fragmentados.The split-merge tool lets you move data between sharded databases. Veja Mover dados entre bancos de dados na nuvem escalados horizontalmenteSee Moving data between scaled-out cloud databases

Baixe os pacotes de Divisão-MesclagemDownload the Split-Merge packages

  1. Baixe a versão mais recente do NuGet de NuGet.Download the latest NuGet version from NuGet.
  2. Abra um prompt de comando e navegue até o diretório onde baixou o nuget.exe.Open a command prompt and navigate to the directory where you downloaded nuget.exe. O download inclui comandos do PowerShell.The download includes PowerShell commands.
  3. Baixe o pacote de mesclagem divisão mais recente no diretório atual com o comando abaixo:Download the latest Split-Merge package into the current directory with the below command:
    nuget install Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge
    

Os arquivos são colocados em um diretório chamado Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge.x.x.xxx.x onde x.x.xxx.x reflete o número de versão.The files are placed in a directory named Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge.x.x.xxx.x where x.x.xxx.x reflects the version number. Localize os arquivos do Serviço de divisão e mesclagem no subdiretório content\splitmerge\service e os scripts de divisão e mesclagem do PowerShell (e as dlls do cliente necessárias) no subdiretório content\splitmerge\powershell.Find the split-merge Service files in the content\splitmerge\service sub-directory, and the Split-Merge PowerShell scripts (and required client dlls) in the content\splitmerge\powershell sub-directory.

Pré-requisitosPrerequisites

  1. Crie um banco de dados do Banco de Dados SQL do Azure que será usado como o banco de dados de status de divisão e mesclagem.Create an Azure SQL DB database that will be used as the split-merge status database. Vá para o Portal do Azure.Go to the Azure portal. Crie um novo banco de dados SQL.Create a new SQL Database. Nomeie o banco de dados e crie um novo administrador e uma senha.Give the database a name and create a new administrator and password. Certifique-se de registrar o nome e a senha para uso posterior.Be sure to record the name and password for later use.
  2. Certifique-se de que o servidor de Banco de Dados SQL do Azure permite que os Serviços do Azure se conectem a ele.Ensure that your Azure SQL DB server allows Azure Services to connect to it. No portal, em Configurações de Firewall, verifique se a configuração Permitir acesso aos Serviços do Azure foi definida como Ativada.In the portal, in the Firewall Settings, ensure the Allow access to Azure Services setting is set to On. Clique no botão “Salvar”.Click the "save" icon.
  3. Crie uma conta de Armazenamento do Azure para saída de diagnóstico.Create an Azure Storage account for diagnostics output.
  4. Crie um serviço de nuvem do Azure para seu serviço de divisão/mesclagem.Create an Azure Cloud Service for your Split-Merge service.

Configurar o serviço de divisão e mesclagemConfigure your Split-Merge service

Configuração do serviço de Divisão-MesclagemSplit-Merge service configuration

  1. Na pasta para a qual você baixou os assemblies de Divisão e Mesclagem, crie uma cópia do arquivo ServiceConfiguration.Template.cscfg fornecido junto com SplitMergeService.cspkg e renomeie-o como ServiceConfiguration.cscfg.In the folder into which you downloaded the Split-Merge assemblies, create a copy of the ServiceConfiguration.Template.cscfg file that shipped alongside SplitMergeService.cspkg and rename it ServiceConfiguration.cscfg.

  2. Abra ServiceConfiguration.cscfg em um editor de texto como o Visual Studio que valide as entradas como o formato de impressões digitais de certificado.Open ServiceConfiguration.cscfg in a text editor such as Visual Studio that validates inputs such as the format of certificate thumbprints.

  3. Crie um novo banco de dados ou escolha um já existente para servir como o banco de dados de status para as operações de Divisão/Mesclagem e recupere a cadeia de conexão do banco de dados.Create a new database or choose an existing database to serve as the status database for Split-Merge operations and retrieve the connection string of that database.

    Importante

    Neste momento, o banco de dados de status deve usar a ordenação latina (SQL_Latin1_General_CP1_CI_AS).At this time, the status database must use the Latin collation (SQL_Latin1_General_CP1_CI_AS). Para obter mais informações, confira Nome da ordenação do Windows (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

    Com o Banco de Dados SQL do Azure, a cadeia de caracteres de conexão normalmente tem o seguinte formato:With Azure SQL DB, the connection string typically is of the form:

    Server=myservername.database.windows.net; Database=mydatabasename;User ID=myuserID; Password=mypassword; Encrypt=True; Connection Timeout=30
    
  4. Insira essa cadeia de conexão no arquivo cscfg nas seções de função SplitMergeWeb e SplitMergeWorker na configuração de ElasticScaleMetadata.Enter this connection string in the cscfg file in both the SplitMergeWeb and SplitMergeWorker role sections in the ElasticScaleMetadata setting.

  5. Para a função SplitMergeWorker, digite uma cadeia de caracteres de conexão válida para o armazenamento do Azure para a configuração WorkerRoleSynchronizationStorageAccountConnectionString.For the SplitMergeWorker role, enter a valid connection string to Azure storage for the WorkerRoleSynchronizationStorageAccountConnectionString setting.

Configurar a segurançaConfigure security

Para obter instruções detalhadas configurar a segurança do serviço, consulte as Configuração de segurança da divisão e mesclagem.For detailed instructions to configure the security of the service, refer to the Split-Merge security configuration.

Para fins de implantação de teste simples para este tutorial, um conjunto mínimo de etapas de configuração será executado para colocar o serviço em operação.For the purposes of a simple test deployment for this tutorial, a minimal set of configuration steps will be performed to get the service up and running. Essas etapas permite que somente o computador/conta que as executa se comunique com o serviço.These steps enable only the one machine/account executing them to communicate with the service.

Criar um certificado autoassinadoCreate a self-signed certificate

Crie um novo diretório e, nesse diretório, execute o seguinte comando usando uma janela de Prompt de comando do desenvolvedor para o Visual Studio :Create a new directory and from this directory execute the following command using a Developer Command Prompt for Visual Studio window:

 makecert ^
 -n "CN=*.cloudapp.net" ^
 -r -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2" ^
 -a sha256 -len 2048 ^
 -sr currentuser -ss root ^
 -sv MyCert.pvk MyCert.cer

Você precisará fornecer uma senha para proteger a chave privada.You are asked for a password to protect the private key. Digite uma senha forte e confirme-a.Enter a strong password and confirm it. Em seguida, será solicitado que você digite a senha mais uma vez.You are then prompted for the password to be used once more after that. Clique em Sim no final para importá-la no armazenamento Raiz de autoridades de certificação confiável.Click Yes at the end to import it to the Trusted Certification Authorities Root store.

Criar um arquivo PFXCreate a PFX file

Execute o seguinte comando na mesma janela onde o makecert foi executado; use a mesma senha que você usou para criar o certificado:Execute the following command from the same window where makecert was executed; use the same password that you used to create the certificate:

pvk2pfx -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx -pi <password>

Importe o certificado do cliente no repositório pessoalImport the client certificate into the personal store

  1. No Windows Explorer, clique duas vezes em Mycert.pfx.In Windows Explorer, double-click MyCert.pfx.
  2. No Assistente de importação de certificado, selecione o Usuário Atual e clique em Avançar.In the Certificate Import Wizard select Current User and click Next.
  3. Confirme o caminho do arquivo e clique em Avançar.Confirm the file path and click Next.
  4. Digite a senha, deixe Incluir todas as propriedades estendidas marcado e clique em Avançar.Type the password, leave Include all extended properties checked and click Next.
  5. Deixe Selecionar automaticamente o repositório de certificados[...] marcado e clique em Avançar.Leave Automatically select the certificate store[…] checked and click Next.
  6. Clique em Concluir e em OK.Click Finish and OK.

Carregue o arquivo PFX para o serviço de nuvemUpload the PFX file to the cloud service

  1. Vá para o Portal do Azure.Go to the Azure portal.
  2. Selecione os Serviços de nuvem.Select Cloud Services.
  3. Selecione o serviço de nuvem criado anteriormente para o serviço de Divisão/Mesclagem.Select the cloud service you created above for the Split/Merge service.
  4. Clique em Certificados no menu superior.Click Certificates on the top menu.
  5. Clique em Carregar na barra de ferramentas inferior.Click Upload in the bottom bar.
  6. Selecione o arquivo PFX e digite a mesma senha como acima.Select the PFX file and enter the same password as above.
  7. Depois de concluído, copie a impressão digital do certificado da nova entrada na lista.Once completed, copy the certificate thumbprint from the new entry in the list.

Atualize o arquivo de configuração de serviçoUpdate the service configuration file

Cole a impressão digital do certificado copiado acima no atributo de impressão digital/valor dessas configurações.Paste the certificate thumbprint copied above into the thumbprint/value attribute of these settings. Para a função de trabalho:For the worker role:

 <Setting name="DataEncryptionPrimaryCertificateThumbprint" value="" />
 <Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

Para a função da web:For the web role:

 <Setting name="AdditionalTrustedRootCertificationAuthorities" value="" />
 <Setting name="AllowedClientCertificateThumbprints" value="" />
 <Setting name="DataEncryptionPrimaryCertificateThumbprint" value="" />
 <Certificate name="SSL" thumbprint="" thumbprintAlgorithm="sha1" />
 <Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />
 <Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

Observe que para implantações de produção devem ser usados certificados separados para a autoridade de certificação, para criptografia, o certificado do servidor e os certificados de cliente.Please note that for production deployments separate certificates should be used for the CA, for encryption, the Server certificate and client certificates. Para obter instruções detalhadas sobre isso, consulte a Configuração de segurança.For detailed instructions on this, see Security Configuration.

Implantar o serviçoDeploy your service

  1. Vá para o Portal do AzureGo to the Azure portal
  2. Selecione o serviço de nuvem que você já criou.Select the cloud service that you created earlier.
  3. Clique em Visão Geral.Click Overview.
  4. Escolha o ambiente de preparo e clique em Carregar.Choose the staging environment, then click Upload.
  5. Na caixa de diálogo, digite um rótulo de implantação.In the dialog box, enter a deployment label. Para 'Pacote' e 'Configuração', clique em 'Do local' e escolha o arquivo SplitMergeService.cspkg e seu arquivo cscfg configurado anteriormente.For both 'Package' and 'Configuration', click 'From Local' and choose the SplitMergeService.cspkg file and your cscfg file that you configured earlier.
  6. Certifique-se de que a caixa de seleção rotulada Implantar mesmo se uma ou mais funções contiverem uma única instância esteja marcada.Ensure that the checkbox labeled Deploy even if one or more roles contain a single instance is checked.
  7. Clique no botão de escala no canto inferior direito para iniciar a implantação.Hit the tick button in the bottom right to begin the deployment. Isso poderá levar alguns minutos para ser concluído.Expect it to take a few minutes to complete.

Solucionar problemas de implantaçãoTroubleshoot the deployment

Se sua função web não ficar online, provavelmente é um problema com a configuração de segurança.If your web role fails to come online, it is likely a problem with the security configuration. Verifique se o SSL está configurado como descrito acima.Check that the SSL is configured as described above.

Se sua função de trabalho não fica online, mas sua função web tiver êxito, provavelmente é um problema na conexão com o banco de dados de status que você criou anteriormente.If your worker role fails to come online, but your web role succeeds, it is most likely a problem connecting to the status database that you created earlier.

  • Verifique se a cadeia de conexão no seu cscfg é precisa.Make sure that the connection string in your cscfg is accurate.

  • Verifique se o servidor e o banco de dados existem e se a ID de usuário e a senha estão corretas.Check that the server and database exist, and that the user id and password are correct.

  • Para o Banco de Dados SQL do Azure, a cadeia de conexão deve estar no formato:For Azure SQL DB, the connection string should be of the form:

    Server=myservername.database.windows.net; Database=mydatabasename;User ID=myuserID; Password=mypassword; Encrypt=True; Connection Timeout=30
    
  • Verifique se o nome do servidor não começa com https:// .Ensure that the server name does not begin with https://.

  • Certifique-se de que o servidor de Banco de Dados SQL do Azure permite que os Serviços do Azure se conectem a ele.Ensure that your Azure SQL DB server allows Azure Services to connect to it. Para fazer isso, abra o banco de dados no portal e verifique se a configuração Permitir acesso aos serviços do Azure está definida como **Habilitada****.To do this, open your database in the portal and ensure that the Allow access to Azure Services setting is set to **On****.

Testar a implantação do serviçoTest the service deployment

Conectar-se com um navegador da WebConnect with a web browser

Determine o ponto de extremidade da web do serviço de Divisão-Mesclagem.Determine the web endpoint of your Split-Merge service. Encontre-o no portal acessando a Visão geral do serviço de nuvem e procurando em URL do Site no lado direito.You can find this in the portal by going to the Overview of your cloud service and looking under Site URL on the right side. Substitua http:// por https:// , uma vez que as configurações de segurança padrão desabilitam o ponto de extremidade HTTP.Replace http:// with https:// since the default security settings disable the HTTP endpoint. Carregue a página para este URL no seu navegador.Load the page for this URL into your browser.

Testes com scripts do PowerShellTest with PowerShell scripts

A implantação e sue ambiente podem ser testados, executando os scripts de exemplo do PowerShell incluídos.The deployment and your environment can be tested by running the included sample PowerShell scripts.

Os arquivos de script incluídos são:The script files included are:

  1. SetupSampleSplitMergeEnvironment.ps1 - configura uma camada de dados de teste para Divisão/Mesclagem (consulte a tabela abaixo para uma descrição detalhada)SetupSampleSplitMergeEnvironment.ps1 - sets up a test data tier for Split/Merge (see table below for detailed description)

  2. ExecuteSampleSplitMerge.ps1 - executa operações de teste no teste de camada de dados (consulte a tabela abaixo para uma descrição detalhada)ExecuteSampleSplitMerge.ps1 - executes test operations on the test data tier (see table below for detailed description)

  3. GetMappings.ps1 — o script de exemplo de nível superior que imprime o estado atual dos mapeamentos de fragmento.GetMappings.ps1 - top-level sample script that prints out the current state of the shard mappings.

  4. ShardManagement.psm1 – o script auxiliar que encapsula a API ShardManagementShardManagement.psm1 - helper script that wraps the ShardManagement API

  5. SqlDatabaseHelpers.psm1 – o script auxiliar para criar e gerenciar bancos de dados SQLSqlDatabaseHelpers.psm1 - helper script for creating and managing SQL databases

    Arquivo do PowerShellPowerShell file EtapasSteps
    SetupSampleSplitMergeEnvironment.ps1SetupSampleSplitMergeEnvironment.ps1 1. Cria um banco de dados do gerenciador de mapa do fragmentoCreates a shard map manager database
    2. Cria 2 bancos de dados do fragmento.Creates 2 shard databases.
    3. Cria um mapa do fragmento para esses bancos de dados (exclui quaisquer mapas do fragmento existentes nesses bancos de dados).Creates a shard map for those databases (deletes any existing shard maps on those databases).
    4. Cria uma pequena tabela de exemplo em ambos os fragmentos e preenche a tabela em um dos fragmentos.Creates a small sample table in both the shards, and populates the table in one of the shards.
    5. Declara o SchemaInfo para a tabela fragmentada.Declares the SchemaInfo for the sharded table.
    Arquivo do PowerShellPowerShell file EtapasSteps
    ExecuteSampleSplitMerge.ps1ExecuteSampleSplitMerge.ps1 1. Envia uma solicitação divisão para o front-end da Web do Serviço de Divisão-Mesclagem, que divide metade dos dados do primeiro fragmento para o segundo.Sends a split request to the Split-Merge Service web frontend, which splits half the data from the first shard to the second shard.
    2. Elege o front-end da web para o status da solicitação de divisão e aguarda até que a solicitação seja concluída.Polls the web frontend for the split request status and waits until the request completes.
    3. Envia uma solicitação de mesclagem ao front-end da Web do Serviço de Divisão-Mesclagem, que move os dados do segundo fragmento para o primeiro.Sends a merge request to the Split-Merge Service web frontend, which moves the data from the second shard back to the first shard.
    4. Elege o front-end da web para o status da solicitação de mesclagem e aguarda até que a solicitação seja concluída.Polls the web frontend for the merge request status and waits until the request completes.

Usar o PowerShell para verificar sua implantaçãoUse PowerShell to verify your deployment

  1. Abra uma nova janela do PowerShell, navegue até o diretório onde baixou o pacote de Divisão-Mesclagem e, em seguida, navegue para o diretório do “powershell”.Open a new PowerShell window and navigate to the directory where you downloaded the Split-Merge package, and then navigate into the “powershell” directory.

  2. Crie um servidor do Banco de Dados SQL do Azure (ou escolha um servidor existente) em que o gerenciador do mapa do fragmento e os fragmentos serão criados.Create an Azure SQL Database server (or choose an existing server) where the shard map manager and shards will be created.

    Observação

    O script SetupSampleSplitMergeEnvironment.ps1 cria todos esses bancos de dados no mesmo servidor por padrão para manter o script simples.The SetupSampleSplitMergeEnvironment.ps1 script creates all these databases on the same server by default to keep the script simple. Isso não é uma restrição do Serviço de Divisão-Mesclagem em si.This is not a restriction of the Split-Merge Service itself.

    Um logon de autenticação do SQL com acesso de leitura/gravação para os bancos de dados será necessário para que o serviço de Divisão-Mesclagem mova os dados e atualize o mapa do fragmento.A SQL authentication login with read/write access to the DBs will be needed for the Split-Merge service to move data and update the shard map. Desde que o Serviço de Divisão-Mesclagem seja executado na nuvem, ele atualmente não dá suporte à Autenticação integrada.Since the Split-Merge Service runs in the cloud, it does not currently support Integrated Authentication.

    Verifique se o SQL Server do Azure está configurado para permitir acesso do endereço IP do computador que executa esses scripts.Make sure the Azure SQL server is configured to allow access from the IP address of the machine running these scripts. Você pode encontrar essa configuração em SQL Server do Azure / configuração / endereços de IP permitidos.You can find this setting under the Azure SQL server / configuration / allowed IP addresses.

  3. Execute o script SetupSampleSplitMergeEnvironment.ps1 para criar o ambiente de exemplo.Execute the SetupSampleSplitMergeEnvironment.ps1 script to create the sample environment.

    A execução desse script apagará quaisquer estruturas de dados de gerenciamento de mapa do fragmento existentes no banco de dados do gerenciador do mapa do fragmento e nos fragmentos.Running this script will wipe out any existing shard map management data structures on the shard map manager database and the shards. Ele pode ser útil para executar novamente o script, se desejar reinicializar o mapa do fragmento ou os fragmentos.It may be useful to rerun the script if you wish to re-initialize the shard map or shards.

    Linha de comando de exemplo:Sample command line:

      .\SetupSampleSplitMergeEnvironment.ps1 
    
          -UserName 'mysqluser' 
          -Password 'MySqlPassw0rd' 
          -ShardMapManagerServerName 'abcdefghij.database.windows.net'
    
  4. Execute o script Getmappings.ps1 para exibir os mapeamentos que existem atualmente no ambiente de exemplo.Execute the Getmappings.ps1 script to view the mappings that currently exist in the sample environment.

      .\GetMappings.ps1 
    
          -UserName 'mysqluser' 
          -Password 'MySqlPassw0rd' 
          -ShardMapManagerServerName 'abcdefghij.database.windows.net'
    
    
  5. Execute o script ExecuteSampleSplitMerge.ps1 para executar uma operação de divisão (mover metade dos dados no primeiro fragmento para o segundo) e, em seguida, uma operação de mesclagem (mover os dados de volta para o primeiro fragmento).Execute the ExecuteSampleSplitMerge.ps1 script to execute a split operation (moving half the data on the first shard to the second shard) and then a merge operation (moving the data back onto the first shard). Se você configurou o SSL e deixou o ponto de extremidade http desabilitado, verifique se, ao invés disso, usou o ponto de extremidade https://.If you configured SSL and left the http endpoint disabled, ensure that you use the https:// endpoint instead.

    Linha de comando de exemplo:Sample command line:

      .\ExecuteSampleSplitMerge.ps1
    
          -UserName 'mysqluser' 
          -Password 'MySqlPassw0rd' 
          -ShardMapManagerServerName 'abcdefghij.database.windows.net' 
          -SplitMergeServiceEndpoint 'https://mysplitmergeservice.cloudapp.net' 
          -CertificateThumbprint '0123456789abcdef0123456789abcdef01234567'
    

    Se você receber o erro abaixo, provavelmente é um problema com o certificado do ponto de extremidade da Web.If you receive the below error, it is most likely a problem with your Web endpoint’s certificate. Tente se conectar ao ponto de extremidade da Web com seu navegador da Web favorito e verifique se há um erro de certificado.Try connecting to the Web endpoint with your favorite Web browser and check if there is a certificate error.

    Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLSsecure channel.
    

    Se for bem-sucedido, a saída deve se parecer com isso:If it succeeded, the output should look like the below:

    > .\ExecuteSampleSplitMerge.ps1 -UserName 'mysqluser' -Password 'MySqlPassw0rd' -ShardMapManagerServerName 'abcdefghij.database.windows.net' -SplitMergeServiceEndpoint 'http://mysplitmergeservice.cloudapp.net' -CertificateThumbprint 0123456789abcdef0123456789abcdef01234567
    > Sending split request
    > Began split operation with id dc68dfa0-e22b-4823-886a-9bdc903c80f3
    > Polling split-merge request status. Press Ctrl-C to end
    > Progress: 0% | Status: Queued | Details: [Informational] Queued request
    > Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request.
    > Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target     shards.
    > Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    > Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Waiting for reference tables copy     completion.
    > Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    > Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of     Sharded tables
    > Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range     [100:110) for table [dbo].[MyShardedTable]
    > ...
    > ...
    > Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table     [dbo].[MyShardedTable].
    > Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created     while processing the request.
    > Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request.
    > Sending merge request
    > Began merge operation with id 6ffc308f-d006-466b-b24e-857242ec5f66
    > Polling request status. Press Ctrl-C to end
    > Progress: 0% | Status: Queued | Details: [Informational] Queued request
    > Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request.
    > Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target     shards.
    > Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    > Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of     Sharded tables
    > Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range     [100:110) for table [dbo].[MyShardedTable]
    > ...
    > ...
    > Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table     [dbo].[MyShardedTable].
    > Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created     while processing the request.
    > Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request.
    > 
    
  6. Experimente outros tipos de dados!Experiment with other data types! Todos esses scripts usam um parâmetro de - ShardKeyType opcional que permite que você especifique o tipo de chave.All of these scripts take an optional -ShardKeyType parameter that allows you to specify the key type. O padrão é Int32, mas você também pode especificar Int64, Guid ou binário.The default is Int32, but you can also specify Int64, Guid, or Binary.

Criar solicitaçõesCreate requests

O serviço pode ser usado por meio da IU da web ou importando e usando o módulo SplitMerge.psm1 do PowerShell que irá enviar suas solicitações por meio da função web.The service can be used either by using the web UI or by importing and using the SplitMerge.psm1 PowerShell module which will submit your requests through the web role.

O serviço pode mover dados em tabelas fragmentadas e tabelas de referência.The service can move data in both sharded tables and reference tables. Uma tabela fragmentada possui uma coluna de chave de fragmentação e tem diferentes dados de linha em cada fragmento.A sharded table has a sharding key column and has different row data on each shard. Uma tabela de referência não é fragmentada para que ele contenha os mesmos dados de linha em cada fragmento.A reference table is not sharded so it contains the same row data on every shard. As tabelas de referência são úteis para dados que não mudam com frequência e são usadas para associação com tabelas fragmentadas em consultas.Reference tables are useful for data that does not change often and is used to JOIN with sharded tables in queries.

Para executar uma operação de Divisão-Mesclagem, você deve declarar as tabelas fragmentadas e as tabelas de referência que deseja mover.In order to perform a split-merge operation, you must declare the sharded tables and reference tables that you want to have moved. Isso é feito com a API SchemaInfo .This is accomplished with the SchemaInfo API. Esta API está no namespace Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.Schema .This API is in the Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.Schema namespace.

  1. Para cada tabela fragmentada, crie um objeto ShardedTableInfo que descreve o nome do esquema da tabela pai (opcional, o padrão é “dbo”), o nome da tabela e o nome da coluna na tabela que contém a chave de fragmentação.For each sharded table, create a ShardedTableInfo object describing the table’s parent schema name (optional, defaults to “dbo”), the table name, and the column name in that table that contains the sharding key.
  2. Para cada tabela de referência, crie um objeto de ReferenceTableInfo que descreve o nome do esquema da tabela pai (opcional, o padrão é “dbo”) e o nome da tabela.For each reference table, create a ReferenceTableInfo object describing the table’s parent schema name (optional, defaults to “dbo”) and the table name.
  3. Adicione os objetos TableInfo acima para um novo objeto SchemaInfo .Add the above TableInfo objects to a new SchemaInfo object.
  4. Obtenha uma referência para um objeto ShardMapManager e chame GetSchemaInfoCollection.Get a reference to a ShardMapManager object, and call GetSchemaInfoCollection.
  5. Adicione o SchemaInfo ao SchemaInfoCollection, fornecendo o nome do mapa de fragmento.Add the SchemaInfo to the SchemaInfoCollection, providing the shard map name.

Um exemplo disso pode ser visto no script SetupSampleSplitMergeEnvironment.ps1.An example of this can be seen in the SetupSampleSplitMergeEnvironment.ps1 script.

O serviço de Divisão-Mesclagem não cria para você o banco de dados de destino (ou o esquema para todas as tabelas no banco de dados).The Split-Merge service does not create the target database (or schema for any tables in the database) for you. Eles devem ser criados previamente antes de enviar uma solicitação ao serviço.They must be pre-created before sending a request to the service.

Solucionar problemasTroubleshooting

Você pode ver a mensagem abaixo ao executar os scripts do powershell de exemplo:You may see the below message when running the sample powershell scripts:

Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Esse erro significa que o certificado SSL não está corretamente configurado.This error means that your SSL certificate is not configured correctly. Siga as instruções na seção 'Conectando-se com um navegador da Web'.Please follow the instructions in section 'Connecting with a web browser'.

Se não for possível enviar solicitações, você verá isso:If you cannot submit requests you may see this:

[Exception] System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'dbo.InsertRequest'. 

Nesse caso, verifique seu arquivo de configuração, em particular a configuração para WorkerRoleSynchronizationStorageAccountConnectionString.In this case, check your configuration file, in particular the setting for WorkerRoleSynchronizationStorageAccountConnectionString. Esse erro normalmente indica que a função de trabalho não pôde inicializar com êxito o banco de dados de metadados no primeiro uso.This error typically indicates that the worker role could not successfully initialize the metadata database on first use.

Recursos adicionaisAdditional resources

Ainda não está usando ferramentas de banco de dados elástico?Not using elastic database tools yet? Confira nosso Guia de Introdução.Check out our Getting Started Guide. Em caso de dúvidas, entre em contato conosco pelo fórum do Banco de Dados SQL e, para solicitações de recursos, adicione-as ao fórum de comentários sobre o Banco de Dados SQL.For questions, please reach out to us on the SQL Database forum and for feature requests, please add them to the SQL Database feedback forum.