Erro no attach do banco no Windows 7

Dica super rápida:

Há alguns dias me deparei com um problema enquanto trabalhava com o SQL Server 2008 R2 no Windows 7. Minha intenção era anexar o banco de dados à instância, processo popularmente conhecimento como “attachar” um banco :)

O problema é que ao fim do processo, depois de clicar em OK surgia a seguinte mensagem de erro:

Unable to open the physical file “C:\AdventureWorks\AdventureWorks_Data.mdf”. Operating system error 5: “5(failed to retrieve text for this error. Reason: 15105)”. (Microsoft SQL Server, Error: 5120)

Bom, inicialmente imaginei que meu arquivo estivesse com problemas físicos… ou eu estivesse sem as devidas permissões. Depois de algumas averiguações vi que minha conta tinha as permissões… portanto o problema era outro.

Pesquisando na net vi uma sugestão para executar o Management Studio como administrador e isso resolveu meu problema:

Até +

Problemas no Database Mail

Você configurou o Database Mail, criou operadores, foi na propriedade Notifications do job e definiu um operador pra receber e-mail na ocorrência de uma falha; no entanto o e-mail não é enviado.

Você resolve dar uma olhada no log pra entender o que está acontecendo e então encontra a seguinte mensagem:

NOTE: Failed to notify ‘nome_do_operador’ via email.

Pra acertar isso va na propriedade Alert System do Sql Server Agent e marque a opção Enable mail profile. Pronto. Agora é só reiniciar o agent e seguir em frente :)

(Não esqueça de reiniciar o agent!)

Bom trabalho!

Erro na instalação do SQL 2008 (Parte II)

Depois de mais um tempo ausente volto pra falar sobre o erro da instalação do SQL Server 2008 no Windows XP (veja link do post aqui). Claro que esse não é o cenário ideal para instalação do SQL Server, mas se você quer instalá-lo no seu notebook ou PC, pra conhecer, estudar ou etc, então pode se deparar com o seguinte erro:

The Windows Installer service cannot update the system file C:\WINDOWS\system32\msxml6r.dll because the file is protected by Windows.  You may need to update your operating system for this program to work correctly.

Isso aconteceu comigo e depois de muitas pesquisas, agora em Outubro a Microsoft liberou um artigo falando sobre este erro.

Segundo o artigo, o erro ocorre quando tentamos instalar uma versão inglês do SQL Server (2005 ou 2008) num Windows XP SP3 não-inglês.

Solução? Não existe uma propriamente dita até o momento, mas se ao verificar o arquivo de log da instalação do SQL Server (na busca do Windows procure por SQLSetup*MSXML6*) você encontrar uma mensagem como está: “MSXML 6.0 Parser — Installation completed successfully.”, você poderá ignorar este erro.

Para ler o artigo na integra, acesse este link: http://support.microsoft.com/kb/958897

Bom trabalho, bons estudos!

Tutorial: Instalando o SQL Server 2008 Express.

Erro na instalação do SQL 2008 (Parte I)

Ontem baixei a versão final do SQL Server 2008 e instalei aqui.

A versão é a Enterprise (Trial) e tive dois problemas durante a instalação.

Um foi bem curioso, antes de iniciar a instalação o instalador informou que não poderia prosseguir porque existiam ferramentas do SQL Server 2005 Express instaladas e que para continuar a instalação eu deveria removê-las. O detalhe é que eu nunca instalei nenhuma versão Express nessa estação(!).

“The SQL Server 2005 Express Tools are installed. To continue, remove the SQL Server 2005 Express Tools.”

Ok… numa pesquisa rápida no fórum da Technet encontrei outros caras que já tiveram o mesmo problema e fiquei surpreso ao saber que o problema era devido a uma ferramenta que instalei, a SQL Prompt da Red Gate (essa ferramenta adiciona Intellisense no Query Analyser e SSMS). Bom, removi a ferramenta e o processo continuou normalmente…

…até eu encontrar outro erro:

The Windows Installer service cannot update the system file C:\WINDOWS\system32\msxml6r.dll because the file is protected by Windows.  You may need to update your operating system for this program to work correctly.

Nas buscas pelo google e technet vi que o assunto está sempre relacionado ao Windows XP e o SP2… vou começar alguns testes hoje a tarde. Se alguém aí já viveu essa situação e tem uma sugestão de como resolver deixe sua contribuição :)

Editado: Solução para este problema neste post:

Tutorial: Instalando o SQL Server 2008 Express.

SQL Server 2005 – Erro Import/Export

Os dias estão bem corridos e só hoje pude resolver aquele problema da importação via interface (SSMS) que ocorreu na semana passada. A mensagem de erro completa é esta:

The SSIS Runtime object could not be created. Verify that DTS.dll is available and registered. The wizard cannot continue and it will terminate.

Unable to cast COM object of type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageNeutralClass’ to interface type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSContainer90′.

Procurei na internet e muita gente sugeriu a reinstalação das ferramentas, no entanto encontrei uma solução mais curta que resolveu de imediato, apenas registrei a dll, veja:

No menu Iniciar > Executar

regsvr32.exe  “C:\Arquivos de programas\Microsoft SQL Server\90\DTS\Binn\DTS.dll”

e enter :)

Pronto!

Inserindo registros via Bulk Insert

Realizar tarefas utilizando interfaces e nosso amigo (mickey) mouse pode ser muito confortável, no entanto, nem sempre elas estão disponíveis, ou em alguns cenários podem não ser a solução mais adequada.

Hoje pela manhã precisava importar dados para uma de nossas bases, a tarefa era urgentíssima, mas como sabemos, é justamente nessas horas que dá tudo errado! Meu Management Studio acordou mal humorado e quando cliquei na opção importar, ele disse sem pestanejar:

Unable to cast COM object of type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageNeutralClass’ to interface type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSContainer90′ (…)

“Putz. Ok, hoje é sexta-feira, posso ir no Google e pesquisar sobre esse erro”. Enquanto pensava nisso meu gerente liga perguntando: “Já importou os dados?”…

Ok, vamos deixar o Google pra lá (por enquanto).

Existe uma forma muito prática de importar dados no SQL Server e foi a ela que recorri, o comando T-SQL é o BULK INSERT e é bem simples, veja o exemplo:

BULK INSERT tbTesteImport FROM ‘C:\arquivos_temp\tx_unid.txt’

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR =‘;’

);

Neste caso o arquivo que eu precisava importar era o tx_unid.txt e ele foi gravado em C:\arquivos_temp do meu servidor SQL. Os dados desse arquivo foram importados para a tabela [tbTesteImport] e como ele tinha algumas particularidades tive que informar no BULK INSERT que ele deveria ignorar a primeira linha (era a linha de cabeçalho) e o caractere que separava um campo do outro era o ponto-e-vírgula (FIELDTERMINATOR =’;').

Pronto! Arquivo importado.

O BULK INSERT tem diversos parâmetros que você pode conferir aqui.

Em outra oportunidade irei comentar outras vantagens da utilização do BULK INSERT e também pretendo comentar sobre o BCP, mas agora vou ao Google ver se encontro o remédio pro mau humor do meu Management Studio :)

Até +

MSDE – Restaurar backup > que 2 GB

(Essa é para os workaholics)

 

Chega sexta feira, você pega o backup da base de dados do serviço e leva pra casa pra adiantar o trabalho (ou correr atrás do prejuízo). Aí no sabadão, ao tentar restaurar o backup: ERRO.

Tenta o restore de novo e o mesmo erro. Sacanagem…

Então liga pra um amigo, pesquisa no Google e descobre: o MSDE tem uma limitação, não aceita bases de dados maiores que 2 GB!!

 

Ok, como (quase) tudo na vida, existe um “jeitinho” pra resolver isso, mas sinceramente não sugiro esse procedimento em nenhum ambiente de produção/homologação e etc. Repito: não sugiro esse procedimento em nenhum ambiente de produção/homologação e etc.

 

Para utilizar uma base > 2GB no MSDE você vai precisar dos arquivos MDF e LDF da sua base de dados original (a do seu trabalho). O procedimento é simples, mas tem contratempos, porque para copiar esses arquivos a base deve estar “desatachada” (ficou estranho mas não encontrei um termo mais apropriado) ou o serviço do SQL deve estar parado. Escolha uma das duas opções e copie os arquivos.

 

Na sua casa o procedimento vai ser o seguinte.

 

1 – No MSDE crie uma base de dados com o mesmo nome que ela tem em seu trabalho;

2 – Verifique onde os arquivos físicos da base foram criados;

3 – Pare o serviço do SQL Server;

4 – Pegue os arquivos MDF e LDF de seu serviço e cole (substitua!) os arquivos que o SQL acabou de criar para a sua nova base (é muito importante que os arquivos tenham o mesmo nome!);

5 – Inicie o serviço do SQL Server e …

 

Bom trabalho!

Modo de autenticação

Existe uma situação famosa no Microsoft SQL Server que costuma dar trabalho a muitos iniciantes e até mesmo a alguns DBAs mais experientes.

Situação: Você acaba de instalar seu Microsoft SQL Server e logo no primeiro acesso surge o erro:

Login failed for user ‘sa’. The user is not associated with a trusted SQL Server connection. (Microsoft SQL Server, Error: 18452) 

Ok, isso acontece porque o SQL Server tem duas formas de autenticação: Autenticação Windows e Mixed Mode (Autenticação com login Windows e/ou login SQL Server), e por padrão, a instalação vem configurada como Windows Authentication, logo, quando o usuário tenta acessar a instância com um login do SQL Server (normalmente o famoso ‘SA’) o sistema manda aquela advertência.

Antes da solução, é bom frisar que por questões de segurança a Microsoft recomenda o modo Windows Authentication, mas se você quer/precisa usar o SA ou outro login criado diretamente no SQL Server, siga os seguintes passos:

Através do Microsoft SQL Server Management Studio (ou Enterprise Manager na versão 2000), clique sobre a instância (Nome do Servidor) com o botão direito e escolha a opção Properties. Na janela Server Properties, clique em Security; em Server authentication clique em SQL Server and Windows Authentication mode.

Pra concluir esta etapa clique no botão OK.

Depois disso o sistema apresenta a seguinte mensagem (que infelizmente nem todos os usuários lêem):

Some of your configuration changes will not take effect until SQL Server is restarted. 

Então é isso, para efetivar a alteração desta configuração é necessário reiniciar o serviço do SQL Server. Existem outras possíveis razões para a ocorrência deste erro, falarei sobre elas em outro dia.

Se eu não consegui te ajudar sugiro uma consulta ao Books Online ou aquela pesquisada básica no Google, ok?   

Um abraço e ótima semana.