segunda-feira, 15 de junho de 2009

Obtem o equivalente a um SELECT COUNT(*) de várias tabelas ao mesmo tempo

Muitas vezes, estamos na situação de exportar um grande número de tabelas de um banco para o outro, mas não sabemos quais selecionar da lista, porque não temos a visualização de quais tabelas possuem efetivamente linhas a exportar.
Você pode fazer um bom e velho cursor, no Sql Server, e para cada tabela executar e exibir um SELECT COUNT(*) ou um sp_spaceused para cada uma das tabelas encontradas.
Abaixo, segue um SELECT que faz exatamente isto, de uma tacada só:


SELECT object_name(object_id),
TOTAL = SUM (
CASE
WHEN (index_id < 2) THEN row_count
ELSE 0
END
)
FROM sys.dm_db_partition_stats
WHERE object_id in (select id from sysobjects where type='U')
group by object_id
having SUM (
CASE WHEN (index_id < 2) THEN rowcount
ELSE 0
END
) > 0

4 comentários:

  1. Olá Paulo, eu programo no Visual Basic dentro do Excel, mas como não é minha área, sou mais um curioso, nunca me aprofundei muito, mas o que sei é bastante útil pra mim. Nesta semana precisei de um comando que abrisse um arquivo do computador com seu programa associado, estou pesquisando mas não consigo achar nada que funcione no VB do Excel. O Sr. sendo muito experiente, será que conhece tal comando? Seria como abrir uma foto com o visualizador de imagens padrão do sistema. Muito obrigado pela atenção! Abraço.

    ResponderExcluir
  2. Michael, boa noite.
    Desculpe por só ter lido a resposta agora.

    No .NET, você pode facilmente fazer a tarefa que você discriminou passando o nome do arquivo para a instrução

    System.Diagnostics.Process.Start("NOME DO ARQUIVO COM EXTENSÃO");

    Agora, no velho e bom VB, você deve usar uma API chamada ShellExecute. Você precisará de alguns outros declares:

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const SW_HIDE = 0
    Private Const SW_MAXIMIZE = 3
    Private Const SW_MINIMIZE = 6
    Private Const SW_NORMAL = 1

    Daí, dentro de seu aplicativo, você pode chamar

    ShellExecute(Me.hwnd, "Open", [Nome do arquivo],
    "", "C:\", SW_SHOWNORMAL)


    Um abraço.

    ResponderExcluir
  3. bom dia .. preciso de uma ajuda para instalar o bde no win7 ... obrigado

    ResponderExcluir