SQL - Como seleccionar todas as tabelas começadas por A?

virtualpraxis

Power Member
Como posso seleccionar todas as tabelas de uma base de dados MSSQL começadas pela letra 'a'?
Já tentei de variadas formas e nada...

Nota: Creio não ser possivel utilizar wildcards do tipo:
SELECT * FROM a*

Alguma sugestão?
 
Última edição:
Boas,

MSSQL não sei, mas em oracle podes fazer isto :

select * from user_objects
where object_type = 'TABLE'
and object_name like 'A%'

Valida se tens uma tabela de controlo chamada user_objects na tua instância.

Abraços
 
Infelizmente ao executar o comando SQL acima obtenho o seguinte erro:

Msg 208, Level 16, State 1, Line 1
Invalid object name 'user_objects'.

Pelos vistos não tenho essa tabela de controlo...
 
Última edição:
Boas,

Sim eu tambem pensei q não ia ser assim "chapa 3". Não sei nada de MSSQL mas fiz uma pesquisa rápida e dei com estes comandos :

sp_help

ou

select * from SYSOBJECTS
where TYPE = 'U'
order by NAME

Ve se dá alguma coisa...
 
Damn... já ando desde manhã para tentar resolver isto e tu consegues em menos de 30m dar-me uma grande ajuda. Thumbs up!

Assim... a minha query final seria algo do género:
select * from (select name from SYSOBJECTS where TYPE = 'U' and NAME like 'a%')

mas infelizmente dá erro:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ')'.


estranho... em principio a query está correcta. Não percebo onde está o erro...?
 
nothing disse:
E só com o
SELECT name FROM SYSOBJECTS WHERE TYPE='U' AND name LIKE 'a%'
não funciona?

Sim sim... executando esse comando dessa forma funciona (quero dizer, não dá erro).

Bom... o que eu tou tentando fazer é: tenho uma base de dados com cerca de 20000 tabelas (!), e ando a tentar exportar essa base de dados de SQL 2005 Express para SQL Server 2000.

Ora, já tentei de tudo para efectuar a exportação pelos métodos normais. Assim e utilizando o utilitário de import/export do SQL Server 2000 (aka DTS) tou a tentar importar as tabelas todas manualmente. Mas... no DTS existe uma opção que dá para usar uma query que selecciona as tabelas que se quer... e é isso mesmo que eu pretendo (penso que a query acima não é válida para o que pretendo).
HELP
 
Última edição:
virtualpraxis disse:
Sim sim... executando esse comando dessa forma funciona (quero dizer, não dá erro).

Bom... o que eu tou tentando fazer é: tenho uma base de dados com cerca de 20000 tabelas (!), e ando a tentar exportar essa base de dados de SQL 2005 Express para SQL Server 2000.

Ora, já tentei de tudo para efectuar a exportação pelos métodos normais. Assim e utilizando o utilitário de import/export do SQL Server 2000 (aka DTS) tou a tentar importar as tabelas todas manualmente. Mas... no DTS existe uma opção que dá para usar uma query que selecciona as tabelas que se quer... e é isso mesmo que eu pretendo (penso que a query acima não é válida para o que pretendo).
HELP

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'a%'

em sql server 2000 ou 2005.

/ing
 
inginheiiro disse:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'a%'

em sql server 2000 ou 2005.

/ing


Executando o comando acima no DTS (numa opção que diz 'use a query to specify data to transfer') do SQL Server 2000, ele escreve apenas uma tabela nova ('results') com os resultados da query executada (4 colunas - table_catalog, table_schema, table_name, table_type). Nada feito...
 
virtualpraxis disse:
Executando o comando acima no DTS (numa opção que diz 'use a query to specify data to transfer') do SQL Server 2000, ele escreve apenas uma tabela nova ('results') com os resultados da query executada (4 colunas - table_catalog, table_schema, table_name, table_type). Nada feito...

...
1-Eu não sei ao certo o que queres fazer.
2-para o quer que seja que desejas fazer, implica saberes um pouco sobre o motor de BD que tás a usar.
3- a query que coloquei , lista todas as tabelas começadas por A, na BD em utilização.

Exemplo: lista todas as tabelas da BD Northwind começadas por C

SELECT * FROM northwind.INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'c%'

se usares a query sem especificares a BD (como eu coloquei no 1º post), obviamente vai buscar as tabelas da BD em uso.

outra coisa. esta query que coloquei retorna uma tabela com as seguintes colunas:
table_catalog, table_schema, table_name, table_type

será da tua "responsabilidade" filtrares os table_name que queres usar nos Dts'S.

/ing
 
Última edição:
virtualpraxis disse:
O que pretendo é efectuar a copia da base de dados do SQL Server 2005 Express para o SQL Server 2000. Sendo que não encontrei outra forma de fazer isso sem ser utilizando o DTS (Data Transformation Service) do SQL Server 2000.

Para uma imagem do que tou a tentar utilizar ver a seguinte página:
http://www.databasejournal.com/features/mssql/article.php/10894_1963091_8

ok.
não te posso ajudar sobre este topico, pois não sou DBA.
se a tua BD for muito grande, então isso é um bico de obra, pois pelo que percebo os DTS preservam todas as propriedades da BD (logins,permissões,indices, etc etc etc).

uma abordagem + simplista seria extraires para um ficheiro ascii o schema da BD.
alterar o ficheiro para executar em sql server 2000.
correr o schema no 2000.

obviamente perderias algumas das propriedades...

/ing
 
ok... tou mesmo pensando seguir o que sugeres.
Agora... utilizando o MS SQL Server Management Studio Express como consigo fazer a exportação para ficheiro?
 
Não sou DBA mas trabalho do MSSQL todos os dias, e se queres copiar a BD de SQL 2k5 para SQL 2K consegues fazer isso na boa com o DTS. Tens uma opção de copy database. A espiga é que se vais com o entreprise manager, que é a tool do MSSQL 2K, é possivél que não consigas, pq o SQL 2K5 tem propriedades novas que não são copiaveis para uma BD MSSQL 2K. Convém usares o SQL Management Studio, que é a tool do SQL 2K5 e se fizeres a cópia/downgrade para SQL 2K, ele deve saber o que fazer.

O processo é simples, tens os dois servidores de BD no mesmo PC ou em PCs diferentes. Se for no mesmo PC, deves ter duas instâncias, uma para o SQL 2K5 e outra para o SQL 2K. Abres uma das instâncias, utilizas o DTS. Defines o source, e o target. Especificas se queres cópia integral da BD, ou só estrutura das tabelas, ou só dados, etc etc. O que quiseres, e depois metes a executar a cópia e siga.


Abraços
X|r|X
 
Back
Topo