Eu queria um script que pudesse percorrer todas as tabelas e suas colunas no banco de dados e inserir dados fictícios com base no tipo e tamanho da coluna, para que eu pudesse começar a usar o banco de dados para testes e capacidade de executar consultas e aplicativos de teste.
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Existem muitos casos que a solução de @AmmarR não lida -
ROWVERSION/TIMESTAMP
colunas computadas, colunas com restrições de verificação, chaves estrangeiras,UNIQUEIDENTIFIER
colunas cujo padrão é , colunas deNEWSEQUENTIALID()
data/hora que são padronizadas comoGETDATE()
, colunas esparsas etc.Por que reinventar a roda? Existem ferramentas que podem gerar dados para você e provavelmente já pensaram em todas essas restrições. Por exemplo DTM Data Generator (não gratuito, não testei) e Red-Gate SQL Data Generator (não gratuito, testei e recomendo - também revisado aqui ).
Tenho certeza de que existem maneiras diferentes e melhores de realizar essa tarefa, por exemplo, usando cursores ou funções SQL, etc. Pensei em compartilhar minha maneira de realizar a tarefa.
começando crie um procedimento armazenado que irá gerar e executar as instruções de inserção que insere os dados fictícios O procedimento armazenado leva em 1 parâmetro, o parâmetro é o não. de linhas a serem adicionadas a todas as tabelas
a lógica do script é simples, um select de
sys.columns
join withsys.types
&sys.tables
O
sys.columns
tem todos os nomes de colunasys.types
tem o tipo de dados da colunasys.tables
tem o nome da tabela, existem outras maneiras de obter o nome da tabela,object_name(c.object_id)
mas pensei que juntar sys.columns comsys.tables
é mais convenienteabaixo está o código
depois disso eu executo o procedimento de armazenamento
Isso adicionará 5 linhas a todas as tabelas no banco de dados