none
Sistema de Backup SQL / Ajuda com excessões? RRS feed

  • Pergunta

  • Boa tarde pessoal,

    Criei um sistema que realiza backup no SQL, porém na lista de opções que ele exibe, não quero que exiba os bancos do sistema (ReportServer e ReportServerTempDB), como faço para colocar essa excessão?

    Segue o código que estou utilizando:

                    connString = "Data Source =" + txtNomeServidor.Text + "; User Id=" + txtUsuario.Text + "; Password=" + txtSenha.Text + "";
                    conn = new SqlConnection(connString);
                    conn.Open();
                    sql = "SELECT * FROM sys.databases d WHERE d.database_id>4";
                    cmd = new SqlCommand(sql, conn);
                    sqlreader = cmd.ExecuteReader();
                    cbSelecione.Items.Clear();
    
                    while (sqlreader.Read())
                    {
                        cbSelecione.Items.Add(sqlreader[0].ToString());
                    }


    segunda-feira, 5 de setembro de 2016 17:23

Respostas

  • Só altera sua query no código que me mandou. assim:

    connString = "Data Source =" + txtNomeServidor.Text + "; User Id=" + txtUsuario.Text + "; Password=" + txtSenha.Text + "";
    conn = new SqlConnection(connString);
    conn.Open();
    sql = "SELECT * FROM sys.databases d WHERE LOWER(d.name) not in ('master', 'tempdb', 'msdb', 'resources', 'reportserver', 'reportserverdb')";
    cmd = new SqlCommand(sql, conn);
    sqlreader = cmd.ExecuteReader();
    cbSelecione.Items.Clear();
    
    while (sqlreader.Read())
    {
        cbSelecione.Items.Add(sqlreader[0].ToString());
    }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 5 de setembro de 2016 18:55

Todas as Respostas

  • Olá,

    Não tem uma propriedade específica que garanta que ela seja do "sistema", portanto terá que fazer algo assim em sua query:

    SELECT name FROM sys.databases
    WHERE name NOT IN ('master', 'model', 'tempdb', 'msdb', 'Resource')

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 5 de setembro de 2016 17:45
  • Amigo, como implemento isso no meu código que enviou acima? 

    Obrigado pela resposta!

    segunda-feira, 5 de setembro de 2016 17:52
  • Só altera sua query no código que me mandou. assim:

    connString = "Data Source =" + txtNomeServidor.Text + "; User Id=" + txtUsuario.Text + "; Password=" + txtSenha.Text + "";
    conn = new SqlConnection(connString);
    conn.Open();
    sql = "SELECT * FROM sys.databases d WHERE LOWER(d.name) not in ('master', 'tempdb', 'msdb', 'resources', 'reportserver', 'reportserverdb')";
    cmd = new SqlCommand(sql, conn);
    sqlreader = cmd.ExecuteReader();
    cbSelecione.Items.Clear();
    
    while (sqlreader.Read())
    {
        cbSelecione.Items.Add(sqlreader[0].ToString());
    }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 5 de setembro de 2016 18:55
  • Amigo, não funcionou assim. Ele não reconheceu as bases, na verdade nem carregou as mesmas. Alguma modificação no código?
    segunda-feira, 5 de setembro de 2016 19:04
  • A query está correta. Tem certeza que tem alguma base a não ser essas do sistema?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 5 de setembro de 2016 19:13
  • A query está correta. Tem certeza que tem alguma base a não ser essas do sistema?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    Deu certo amigo, eu estava colocando os nomes sem validação de maiúsculo/minúsculo. Obrigado!

                    sql = "SELECT * FROM sys.databases d WHERE d.name not in('master','tempdb','model','msdb','ReportServer','ReportServerTempDB')";

    segunda-feira, 5 de setembro de 2016 19:19