sexta-feira, 9 de agosto de 2013
Usando o GO para executar um comando vezes
CREATE TABLE #tmp (id int primary key identity(1,1), counter int default 0)
GO
-- Inserindo dados na tabela
INSERT INTO #tmp DEFAULT VALUES
GO 10
--Vai executar o Insert 10 vezes, sem necessidade de loop
Preenchendo campo com valores sequenciais
Dica muito útil para preencher um campo inteiro com valores sequenciais, o que não é muito raro de precisar para quem vive dando consultoria para clientes.
Segue a dica original: http://www.sqlserverdicas.com/2011/11/update-com-incremento.html
E esta é a minha utilização, baseada na dica original.
DECLARE @counter int
SET @counter = (select max(codcliente)+1 from clientes);
update clientes
set @counter = CodCliente = @counter + 1
where codcliente = 0
Segue a dica original: http://www.sqlserverdicas.com/2011/11/update-com-incremento.html
E esta é a minha utilização, baseada na dica original.
DECLARE @counter int
SET @counter = (select max(codcliente)+1 from clientes);
update clientes
set @counter = CodCliente = @counter + 1
where codcliente = 0
Assim eu pude completar os codigos que estavam zerados com valores sequenciais, começando do último mais um, e seguindo em frente.
terça-feira, 9 de julho de 2013
O formato da seqüência de inicialização não está de acordo com a especificação iniciada no índice XX
Ao tentar postar um relatório em uma nova instalação do SQL Server Business Intelligence Development Studio, obtive o seguinte erro: O formato da seqüência de inicialização não está de acordo com a especificação iniciada no índice XX (onde XX é um número de índice).
Após algumas pesquisas, cheguei a informações que poderia ser o uso de "\" simples em vez de "\\" duplas ao criar uma conexão no .NET. Não era isto, pois estou no Reporting Services e as conexões são configuradas, não programadas. Então eu não teria este nível de controle.
Como abri o projeto dos relatórios de uma pasta da rede, pois acabara de instalar o IDE, resolvi refazer a conexão com o banco. E foi isto que resolveu, pois estava dando falha na autenticação. Por algum motivo a conexão foi aberta sem o usuário/senha que eu havia informado na conexão. A senha até parecia estar preenchida, mas só funcionou depois que eu digitei novamente.
Espero que ajude a outros, pois a situação de instalar o IDE em outra máquina é tão comum... 8-)
Após algumas pesquisas, cheguei a informações que poderia ser o uso de "\" simples em vez de "\\" duplas ao criar uma conexão no .NET. Não era isto, pois estou no Reporting Services e as conexões são configuradas, não programadas. Então eu não teria este nível de controle.
Como abri o projeto dos relatórios de uma pasta da rede, pois acabara de instalar o IDE, resolvi refazer a conexão com o banco. E foi isto que resolveu, pois estava dando falha na autenticação. Por algum motivo a conexão foi aberta sem o usuário/senha que eu havia informado na conexão. A senha até parecia estar preenchida, mas só funcionou depois que eu digitei novamente.
Espero que ajude a outros, pois a situação de instalar o IDE em outra máquina é tão comum... 8-)
Marcadores:
Reporting Services,
Troubleshooting
segunda-feira, 25 de março de 2013
Cloning tables in TSQL, as in Oracle CTAS
Explaining: the CREATE TABLE AS SELECT * FROM command, used to create a whole new table from an existing one (aka CTAS), and already importing its data, has a similar on Microsoft Transact-SQL: SELECT * INTO NEW_TABLE FROM EXISTENT_TABLE .
It's quite simple like you were filling such a variable.
It's quite simple like you were filling such a variable.
Clonando tabelas no TSQL, como o CTAS do Oracle
Explicando: o comando CREATE TABLE AS SELECT * FROM , usado para criar uma nova tabela a partir de outra no Oracle (aka CTAS), e já importando seus dados, tem um correspondente no Microsoft Transact-SQL: SELECT * INTO NEW_TABLE FROM EXISTENT_TABLE .
É tão simples como se estivesse preenchendo uma variável.
É tão simples como se estivesse preenchendo uma variável.
segunda-feira, 18 de fevereiro de 2013
Erro no INSERT em tabela com campo IDENTITY
Ao tentar inserir um valor em uma tabela com campo identity diretamente, será necessário ligar o atributo identity_insert, e também informar explicitamente a lista de campos, ou seja, o comando a seguir, sem a lista explícita vai gerar o erro "An explicit value for the identity column in table 'table_name' can only be specified when a column list is used and IDENTITY_INSERT is ON";
INSERT nome_tabela VALUES (Valor1, Valor2, etc)
Pois neste caso é imperativo que se informa a lista de campos, deste jeito:
INSERT nome_tabela(Campo1, Campo2, etc) VALUES (Valor1, Valor2, etc).
Para ligar e desligar o atributo:
SET IDENTITY_INSER ON BANCO.DBO.TABELA ON|OFF
Não sei se a lista de campos é uma questão de versão do banco, mas no SQL Server 2008 foi necessário informá-la. Bom trabalho a todos.
sexta-feira, 8 de fevereiro de 2013
TNS Protocol Adapter Erro
[PT-BR]
Um dos motivos deste erro é que o sqlplus não consegue identificar o ORACLE_SID, e fica sem saber em qual Instância de banco efetuar o login.
A solução mais simples que achei na web para meu caso foi configurar a variável de ambiente citadas:
c:>set ORACLE_SID=
O nome da variável pode estar em qualquer combinação de caixa (alta, baixa ou mista).
[ENU]
One of the causes of this error is the fact that sqlplus cannot identify the oracle_sid value, and cannot decide which instance to log in.
The simpler solution I`ve found on the web for my actual case was to set up the environment variable cited above:
c:>set ORACLE_SID=
The variable name can be typed in any combination of case.
Assinar:
Postagens (Atom)