Exportar (0) Imprimir
Expandir Tudo

Gerenciando a senha de administrador para servidores.

A operação Definir Senha de Administrador de Servidor define a senha administrativa de um servidor do Banco de dados SQL para uma assinatura.

Solicitação

Veja a seguir como a solicitação Definir Senha de Administrador de Servidor deve ser especificada. Substitua <subscription-id> pela sua ID de assinatura e <servername> pelo nome do servidor cuja senha será redefinida.

 

Método URI de solicitação Versão de HTTP

POST

https://management.database.windows.net:8443/<subscription-id>/servers/<servername>?op=ResetPassword

HTTP/1.1

Parâmetros URL

Nenhum parâmetro de URL é usado com esta operação.

Cabeçalhos de solicitação

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

 

Cabeçalho de solicitação Descrição

x-ms-version

Obrigatório. Especifica a versão da operação a ser usada para esta solicitação. Esse cabeçalho deve ser definido como 1.0.

Corpo da solicitação

Formato do corpo da solicitação:

<?xml version="1.0" encoding="utf-8"?>
<AdministratorLoginPassword xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  TheNewPassword
</AdministratorLoginPassword>

Exemplo de solicitação

Veja este exemplo de um corpo de solicitação:

<?xml version="1.0" encoding="utf-8"?>
<AdministratorLoginPassword xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  S0m3N3wP@$$w0rd
</AdministratorLoginPassword>

Resposta

A resposta inclui um código de status HTTP e um conjunto de cabeçalhos de resposta.

Código de status

Uma operação Definir Senha de Administrador de Servidor bem-sucedida retornará o código de status HTTP 200 (Êxito).

A tabela a seguir lista alguns dos erros em potencial desta operação.

 

Código do erro Código de status HTTP Mensagem do usuário

40630

Solicitação incorreta (400)

Falha na validação de senha. A senha não atende aos requisitos de política, pois é muito curta.

40631

Solicitação incorreta (400)

A senha especificada é muito longa. A senha deve conter no máximo 128 caracteres.

40632

Solicitação incorreta (400)

Falha na validação de senha. A senha não atende aos requisitos de política, pois não é complexa o bastante.

40638

Solicitação incorreta (400)

Id de assinatura <subscription-id> inválida. A assinatura não existe.

40639

Solicitação incorreta (400)

A solicitação não está de acordo com o esquema: <schema error>.

40640

Erro interno do servidor (500)

O servidor encontrou uma exceção inesperada.

40642

Serviço não disponível (503)

O servidor está muito ocupado no momento. Tente novamente mais tarde.

40643

Solicitação incorreta (400)

O valor de cabeçalho x-ms-version especificado é inválido.

40644

Proibido (403)

Falha ao autorizar o acesso à assinatura especificada.

40645

Solicitação incorreta (400)

O nome de servidor <servername> não pode ser nulo ou vazio. Ele só pode conter letras minúsculas 'a'-'z', os números 0-9 e o hífen. O hífen não deve aparecer à esquerda ou à direita do nome.

40646

Solicitação incorreta (400)

A ID da assinatura não pode estar vazia.

40647

Solicitação incorreta (400)

A assinatura <subscription-id> não tem o servidor <servername>.

40648

Serviço não disponível (503)

Foram feitas muitas solicitações. Tente novamente mais tarde.

40649

Solicitação incorreta (400)

Foi especificado um tipo de conteúdo inválido. Há suporte apenas para application/xml.


Para obter mais informações sobre códigos de status da API de gerenciamento do Banco de dados SQL, consulte Status e códigos de erro.

Cabeçalhos de resposta

A resposta para esta operação inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos padrão HTTP adicionais. Todos os cabeçalhos padrão obedecem a especificação de protocolo HTTP/1.1.

 

Cabeçalho de resposta Descrição

x-ms-request-id

Um valor que identifica exclusivamente uma solicitação feita no serviço de gerenciamento de banco de dados. Esta id de solicitação é usada no controle de solicitações. Se ocorrer uma falha que exija que o usuário contate o Suporte Microsoft, forneça a id da solicitação à Microsoft para ajudar a controlar e resolver a falha para a solicitação.

A API de gerenciamento do Banco de dados SQL não oferece suporte a chamadas assíncronas.

Corpo da resposta

A operação Definir Senha de Administrador de Servidor não retorna um corpo de resposta. O código de status HTTP indica êxito ou falha.

Exemplo de código

O código a seguir apresenta um exemplo simples para chamar esta operação de um aplicativo de console C#. Este código usa as classes System.Net.HttpWebRequest e System.Security.Cryptography.X509Certificate2 para submeter a solicitação através do certificado de chave privada.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Xml;

namespace SQLAzureDatabaseManagement
{
    class Program
    {

        static void Main(string[] args)
        {
            string certFile;
            string certPassword;
            string subscriptionId;
            string ServerName;
            string NewPassword;

            if (args.Length != 5)
            {
                Console.WriteLine("\nInsufficient Arguments.\n");
                Console.WriteLine("Expected CertfilePath, CertfilePassword, SubscriptionID, ServerName, and NewPassword.\n");
                return;
            }
            else
            {
                certFile = args[0];
                certPassword = args[1];
                subscriptionId = args[2];
                ServerName = args[3];
                NewPassword = args[4];
            }


            //=========================================================================//
            //=== Execute SQL Database Server and Firewall Rules Management Operations ===//
            //=========================================================================//

            // Set a new server password
            SetServerAdministratorPassword(certFile, certPassword, subscriptionId, ServerName, NewPassword);
        }


        //===============================================================================================================//
        //===                                                                                                         ===//
        //=== SetServerAdministratorPassword                                                                          ===//
        //===                                                                                                         ===//
        //=== This function resets the administrator password of the specified server to a new specified password.    ===//
        //===                                                                                                         ===//
        //=== Input Parameters:                                                                                       ===//
        //===                                                                                                         ===//
        //===   string certFilename : Full path to the Personal Information Exchange (.pfx) file which holds the      ===//
        //===                         private key for the certificate. The public key file must already be associated ===//
        //===                         to the subscription.                                                            ===//
        //===                                                                                                         ===//
        //===   string certPassword : The password of the Personal Information Exchange (.pfx) file.                  ===//
        //===                                                                                                         ===//
        //===   string subscriptionId : This is the subscription id GUID in its string form.                          ===//
        //===                                                                                                         ===//
        //===   string Server : The SQL Database server that will have its firewall rules modified.                      ===//
        //===                                                                                                         ===//
        //===   string RuleName : The name of the firewall rule that is to be deleted from the server.                ===//
        //===                                                                                                         ===//
        //=== Output:                                                                                                 ===//
        //===                                                                                                         ===//
        //===   The output of this function is written to the console. The output includes:                           ===//
        //===                                                                                                         ===//
        //===     The subscription id passed to this function.                                                        ===//
        //===                                                                                                         ===//
        //===     The server name passed to this function.                                                            ===//
        //===                                                                                                         ===//
        //===     The name of the firewall rule passed to this function that is to be deleted from the server.        ===//
        //===                                                                                                         ===//
        //===     The x-ms-request-id header returned from the REST API call.                                         ===//
        //===                                                                                                         ===//
        //===     The HTTP Status code returned from the REST API call.                                               ===//
        //===                                                                                                         ===//
        //===============================================================================================================//

        static void SetServerAdministratorPassword(string certFilename, string certPassword, string subscriptionId, string Server, string AdminPwd)
        {
            Console.WriteLine("\n======================================");
            Console.WriteLine("=== SetServerAdministratorPassword ===");
            Console.WriteLine("======================================\n");
            Console.WriteLine("Subscription : {0}", subscriptionId);
            Console.WriteLine("Server : {0}\n", Server);

            try
            {
                string url = string.Format("https://management.database.windows.net:8443/{0}/servers/{1}?op=ResetPassword", subscriptionId, Server);
                HttpWebRequest webRequest = HttpWebRequest.Create(url) as HttpWebRequest;

                webRequest.ClientCertificates.Add(new X509Certificate2(certFilename, certPassword));
                webRequest.Headers["x-ms-version"] = "1.0";
                webRequest.Method = "POST";

                //=== Add the Request Payload ===//

                string xmlBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                                  "<AdministratorLoginPassword xmlns=\"http://schemas.microsoft.com/sqlazure/2010/12/\">\n  " +
                                  AdminPwd.ToString() + "\n" +
                                  "</AdministratorLoginPassword>";

                Console.WriteLine("Request Body for SetServerAdministratorPassword : ...\n");
                Console.WriteLine(xmlBody + "\n");

                byte[] bytes = Encoding.UTF8.GetBytes(xmlBody);
                webRequest.ContentLength = bytes.Length;
                webRequest.ContentType = "application/xml;charset=utf-8";
                using (Stream requestStream = webRequest.GetRequestStream())
                {
                    requestStream.Write(bytes, 0, bytes.Length);
                }


                //=== Send the request and wait on the response ===//

                using (WebResponse webResponse = webRequest.GetResponse())
                {
                    //=== x-ms-request-id is useful for troubleshooting request failures with Microsoft ===//
                    Console.WriteLine("Response x-ms-request-id : {0}", webResponse.Headers["x-ms-request-id"]);
                    Console.WriteLine("HttpStatusCode = {0}\n", (int)((HttpWebResponse)webResponse).StatusCode);

                    using (Stream stream = webResponse.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(stream))
                        {
                            Console.WriteLine(sr.ReadToEnd());
                        }
                    }
                }
            }


            //====================================================================================//
            //=== Catch WebExceptions. The SQL Database Management Service will          ===//
            //=== provide detailed error information in the response stream for WebExceptions. ===//
            //====================================================================================//

            catch (WebException webEx)
            {
                HttpWebResponse errorResponse = (HttpWebResponse)webEx.Response;
                Console.WriteLine(string.Format("HttpStatusCode = {0}", (int)errorResponse.StatusCode));

                try
                {
                    using (Stream errorResponseStream = errorResponse.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(errorResponseStream))
                        {
                            Console.WriteLine(sr.ReadToEnd());
                        }
                    }
                }
                catch (Exception innerEx)
                {
                    Console.WriteLine(innerEx.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString() + "\n");
                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.ToString() + "\n");
                }
            }
        }

    }
}


Compilando o código de exemplo

O código de exemplo pode ser adicionado a um projeto de aplicativo de console e compilado no Visual Studio IDE (ambiente de desenvolvimento integrado). Outra alternativa é compilar da linha de comando de um prompt de comando usando o compilador Visual C# que também é incluído com o .NET Framework.

No exemplo a seguir, o código foi copiado em um novo arquivo de texto denominado SetServerPassword.cs e compilado da linha de comando. Esta compilação também gera informações de depuração.

C:\Test>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc /debug /out:SetServerPassword.exe SetServerPassword.cs

Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.


C:\Test>dir
 Volume in drive C has no label.
 Volume Serial Number is 5471-ED89

 Directory of C:\Test

02/15/2011  02:52 PM    <DIR>          .
02/15/2011  02:52 PM    <DIR>          ..
02/15/2011  02:52 PM             7,168 SetServerPassword.exe
02/15/2011  02:52 PM            13,824 SetServerPassword.pdb

Executando o código de exemplo

O exemplo a seguir executa o código de exemplo usando o certificado de chave privada MyCert.pfx para autenticação. O certificado de chave pública (MyCert.cer) já foi adicionado à assinatura. Para obter mais informações sobre autenticação, consulte Autenticando solicitações de API de gerenciamento do Banco de dados SQL do Windows Azure.

O identificador globalmente exclusivo 2eae7c21-ffd1-49e4-ac22-39095e0b9f02 é um exemplo de id de assinatura Windows Azure. Esta assinatura já tem o servidor do Banco de dados SQL, l1ej7qgrem, provisionado para ela. A linha de comando mostrada a seguir envia uma solicitação para que a senha administrativa do servidor seja alterada para “S0m3N3wP@$$w0rd”. O código de status HTTP, 200, é um código de resposta de êxito indicando que a operação foi bem-sucedida.

C:\Test>SetServerPassword C:\SecureStore\MyCert.pfx MyCertPassword 2eae7c21-ffd1-49e4-ac22-39095e0b9f02 l1ej7qgrem S0m3N3wP@$$w0rd

======================================
=== SetServerAdministratorPassword ===
======================================

Subscription : 2eae7c21-ffd1-49e4-ac22-39095e0b9f02
Server : l1ej7qgrem

Request Body for SetServerAdministratorPassword : ...

<?xml version="1.0" encoding="utf-8"?>
<AdministratorLoginPassword xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  S0m3N3wP@$$w0rd
</AdministratorLoginPassword>

Response x-ms-request-id : e9506d18-69de-4b2d-baa9-8543703ce691
HttpStatusCode = 200

Consulte também

Contribuições da comunidade

Mostrar:
© 2014 Microsoft