Creo conviene tener a mano este enlace donde se recogen las diferentes versiones de Ms SQL Server.
Muchas gracias a la gente de sqlsecurity.com por mantenerla y actualizarla !!
miércoles, 17 de noviembre de 2010
SQL Server setup media does not support the language of the OS
SQL Server 2008R2 no puede instalarse sobre un sistema operativo en distinto idioma o localización (salvo la versión de SQL en inglés que vale para todos los lenguajes)
Por ejemplo, SQL 2008R2 en español dará este fallo si trata de instalarse en un Windows Server 2003 en Español- Argentina. Es un poco sorprendente, pero así lo han decidido en Micorosot.
Para solventarlo, debe modificarse la 'configuración regional y de idioma ' (en panel de control) a Español de España. Una vez instalado SQL, ya se puede volver a cambiar
Si lo anterior no aplica, entonces probablemente el problema sea con los ficheros de instalación que pudieran estar corruptos
lunes, 15 de noviembre de 2010
Outlook: Problema con reglas de usuario corruptas
Al crear una nueva regla en Oulook puede aparecer este error:
Una o más reglas no se podrían cargar al servidor de Exchange y que han desactivado. Es posible que algunos de los parámetros no son compatibles o no hay espacio suficiente para almacenar todas sus reglas
Parece ser que Exchange limita a 32K el espacio de almacenamiento para reglas y alertas (a partir de Exchange 2007 hay otros 32 K extra)
Microsoft ofrece un KB con varias solucciones
No sé si fue porque las reglas que habia creado estaban coruuptas o que (igual tras la migración a 2007) pero a mi lo único que e me funcionó fue eliminar todas las reglas y volver a recrearlas. No es el tipo de solucción más profesional, pero...
Ir a
inicio - ejectuar - y ahi escribir outlook /cleanrules
Outlook se abrirá limpio de reglas Igual es buena idea exportarlas primero
Una o más reglas no se podrían cargar al servidor de Exchange y que han desactivado. Es posible que algunos de los parámetros no son compatibles o no hay espacio suficiente para almacenar todas sus reglas
Parece ser que Exchange limita a 32K el espacio de almacenamiento para reglas y alertas (a partir de Exchange 2007 hay otros 32 K extra)
Microsoft ofrece un KB con varias solucciones
No sé si fue porque las reglas que habia creado estaban coruuptas o que (igual tras la migración a 2007) pero a mi lo único que e me funcionó fue eliminar todas las reglas y volver a recrearlas. No es el tipo de solucción más profesional, pero...
Ir a
inicio - ejectuar - y ahi escribir outlook /cleanrules
Outlook se abrirá limpio de reglas Igual es buena idea exportarlas primero
miércoles, 10 de noviembre de 2010
SQL Server "Denali" CTP1
Microsoft anunció ayer en el marco del Pass Submit 2010, su nuevo proyecto de SQL Server llamado "Denali". La primera versión ya está disponible para descargar y probar. La versiones disponibles para este "Communitiy Technology Preview 1 son Evaluation y Datacenter.
Habrá que probarlo
Habrá que probarlo
martes, 9 de noviembre de 2010
Changing the status to PAUSE/ RESUME for full-text catalog
Si el "Full-Text" search está activo y funcionando en una bbdd veréis en el log de sql entradas similares a estas:
11/09/2010 11:54:22,Backup,Unknown,Database backed up. Database:BBDD creation date(time): 2010/03/22(14:47:32) pages dumped: 2319 first LSN: 627:533:37 last LSN: 627:549:1 number of dump devices: 1 device information: (FILE=1 TYPE=DISK: {'PATH\bbdd201011091151.bak'}). This is an informational message only. No user action is required.
11/09/2010 11:54:20 spid54,Unknown,Changing the status to RESUME for full-text catalog "CATALOGO" (5) in database "BBDD" (49). This is an informational message only. No user action is required.
11/09/2010 11:54:20,spid54,Unknown,Changing the status to PAUSE for full-text catalog "CATALOGO" (5) in database "BBDD" (49). This is an informational message only. No user action is required.
Esto es debido a que SQL hace también copia de seguridad del catálogo 'full-text' cuando realiza un backup normal de la base de datos. Si el tiempo entre 'pause-resume' es mínimo no hay que preocuparse
( De todas formas, para evitar problemas IO (vamos, que la pausa exceda de lo normal) es recomendable que los ficheros de full-text no se encuentren en el mismo disco que los backups)
Según la ayuda en línea, SQL lleva, normalmente, estas operaciones a cabo cuando realiza un backup:
Sobre la propiedad FULLTEXTCATALOGPROPERTY en los libros en linea o aquí tenéis la info
11/09/2010 11:54:22,Backup,Unknown,Database backed up. Database:BBDD
11/09/2010 11:54:20 spid54,Unknown,Changing the status to RESUME for full-text catalog "CATALOGO" (5) in database "BBDD" (49). This is an informational message only. No user action is required.
11/09/2010 11:54:20,spid54,Unknown,Changing the status to PAUSE for full-text catalog "CATALOGO" (5) in database "BBDD" (49). This is an informational message only. No user action is required.
Esto es debido a que SQL hace también copia de seguridad del catálogo 'full-text' cuando realiza un backup normal de la base de datos. Si el tiempo entre 'pause-resume' es mínimo no hay que preocuparse
( De todas formas, para evitar problemas IO (vamos, que la pausa exceda de lo normal) es recomendable que los ficheros de full-text no se encuentren en el mismo disco que los backups)
Según la ayuda en línea, SQL lleva, normalmente, estas operaciones a cabo cuando realiza un backup:
- Suspende temporalmente el servicio Motor de texto completo de Microsoft para SQL Server (MSFTESQL) y vacía en el disco todos los cambios pendientes en el catálogo de texto. Además, SQL Server detiene cualquier actividad de escritura en el catálogo y pone en cola todos los cambios que todavía no se han procesado al iniciar la copia de seguridad en el registro de notificaciones, de forma que puedan confirmarse estos cambios en los catálogos de texto cuando finalice la copia de seguridad.
El estado del catálogo se conserva en el disco. En este punto todavía es posible realizar consultas en el catálogo.
- Realiza copias de seguridad de todos los datos de tablas y catálogos de texto, registros de seguimiento de cambios y metadatos.
- Realiza copias de seguridad de todos los datos, en el registro de transacciones, que han tenido lugar desde el inicio del proceso de copia de seguridad.
- Reanuda el servicio MSFTESQL y el llenado de los índices de texto.
Sobre la propiedad FULLTEXTCATALOGPROPERTY en los libros en linea o aquí tenéis la info
Etiquetas:
backup,
Full-text,
Ms SQL Server,
Ms SQL Server 2005
viernes, 5 de noviembre de 2010
SP4 para SQL Server 2005
Microsoft liberó anteayer la versión beta del Service Pack 4 ( CTP -Customer Technology Preview- en lenguaje Redmon :-)
En esta página tenéis el anuncio oficial con enlaces para descargaros los nuevos SP
En esta página tenéis el anuncio oficial con enlaces para descargaros los nuevos SP
jueves, 4 de noviembre de 2010
Trabajos que no pueden ser borrados?
Los trabajos asociados a un plan de mantenimiento continúan ahí una vez borrado el plan. Al tratar de eliminarlos manualmente (ratón, botón derecho) SQL nos muestra:
Attempt to retrieve data for object failed for Server 'XXXXXX'.
(Microsoft.SqlServer.Smo)
The Job 'xxxxxx for DB Maintenance Plan 'xxxxxxx'
does not exist on the server. (Microsoft.SqlServer.Smo)
SQL Server nos dice que estamos tratando de borrar algo que ya ha sido borrado cuando eliminamos el plan de mantenimiento. EM o Management Studio no refrescan automáticamente. F5 y habrán volado.
Un compañero estuvo hoy dándole vueltas toda la mañana. a este 'problema' Ay si hubiera preguntado primero al dba!
Attempt to retrieve data for object failed for Server 'XXXXXX'.
(Microsoft.SqlServer.Smo)
The Job 'xxxxxx for DB Maintenance Plan 'xxxxxxx'
does not exist on the server. (Microsoft.SqlServer.Smo)
SQL Server nos dice que estamos tratando de borrar algo que ya ha sido borrado cuando eliminamos el plan de mantenimiento. EM o Management Studio no refrescan automáticamente. F5 y habrán volado.
Un compañero estuvo hoy dándole vueltas toda la mañana. a este 'problema' Ay si hubiera preguntado primero al dba!
Etiquetas:
agente,
jobs,
Ms SQL Server,
plan de mantenimiento,
SQL Agent,
trabajos
lunes, 25 de octubre de 2010
Mover la Tempdb
La tempdb se crea por defecto en el mismo directorio que los binarios de SQL. Una buena (y recomendable) práctica es separar la tempdb del resto de bbdd.
(en el ejemplo se mueve el archivo mdf a G:\MSSQL\DATA\ y el log a H:\MSSQL\LOGS\. Los directorios deben existir)
(en el ejemplo se mueve el archivo mdf a G:\MSSQL\DATA\ y el log a H:\MSSQL\LOGS\. Los directorios deben existir)
Etiquetas:
Buenas Prácticas,
Ms SQL Server,
script,
tempdb
jueves, 14 de octubre de 2010
Seminarios gratuitos online
PragmaticWorks ofrece unos interesantes seminarios online gratuitos (en inglés)
Más información aquí
Más información aquí
jueves, 30 de septiembre de 2010
WZCSVC Error 1068
Al tratar de iniciar el servicio de Wireless Zero Configuration (WZCSV) salió este error:
Las dependencias a las que hace referencia son RPC (el cual estaba corriendo) y NDISUIO , que no era capaz de encontrar en la consola
pero si en el registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDISUIO (HKLM\SYSTEM\... es donde el registro de windows guarda la configuración los distintos servicios y drivers)
La DWWord Start tenía valor 4 (deshabilitado)
Una vez cambiado a 1 (autostart), reiniciar el sistema y mi WIFI volvió a funcionar
Las dependencias a las que hace referencia son RPC (el cual estaba corriendo) y NDISUIO , que no era capaz de encontrar en la consola
pero si en el registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDISUIO (HKLM\SYSTEM\... es donde el registro de windows guarda la configuración los distintos servicios y drivers)
La DWWord Start tenía valor 4 (deshabilitado)
Una vez cambiado a 1 (autostart), reiniciar el sistema y mi WIFI volvió a funcionar
SQL Server 2008 Service Pack 2 disponible
En el siguiente blog del equipo de Ms SQL Server tenéis detalles y enlaces
El paquete es sólo para SQL 2008 no SQL 2008 R2
El paquete es sólo para SQL 2008 no SQL 2008 R2
jueves, 23 de septiembre de 2010
Recuperar archivos de CDs, DVDs, discos duros...
JFileRecovery es un magnífico (y gratuito) programa para recuperar archivos de CDs, DVDs o discos dañados.
Muy recomendable
Muy recomendable
lunes, 20 de septiembre de 2010
T-SQL y Algoritmos Genéticos
Os pongo este script como ejemplo de la utilización de T-SQL para programar algoritmos genéticos
Ttrata de calcular la siguiente función (típico ejemplo):
Maximizar f(x1, x2) = 21.5 + x1 sin(4πx1) + x2 sin(20πx2)
Sujeto a:
-3.0 <- x1 <- 12.1
4.1 <- x2 <- 5.8
Este script está basado en la solución que Willian Talada aporta en “A Genetic Algorithm Sample in T-SQL" para el problema del robot y las latas que plantea Melanie Mitchell en su libro “Complexity: A Guided Tour”, 2009
Para convertir los valores binarios a base 10, el algoritmo utiliza una simple función definida
de usuario llamada ConvertFromBase
Debido a las particularidades del lenguaje T-SQL, para simplificar elegí la selección
elitista (sólo los dos mejores) como mecanismo para obtener los distintos padres.
El resultado final son dos listas: una que incluye todos los padres, con todos los detalles y otra
con el valor- número de generación más alto
Ttrata de calcular la siguiente función (típico ejemplo):
Maximizar f(x1, x2) = 21.5 + x1 sin(4πx1) + x2 sin(20πx2)
Sujeto a:
-3.0 <- x1 <- 12.1
4.1 <- x2 <- 5.8
Este script está basado en la solución que Willian Talada aporta en “A Genetic Algorithm Sample in T-SQL" para el problema del robot y las latas que plantea Melanie Mitchell en su libro “Complexity: A Guided Tour”, 2009
Para convertir los valores binarios a base 10, el algoritmo utiliza una simple función definida
de usuario llamada ConvertFromBase
/* Función que convierte cualquier base a base 10 http://dpatrickcaldwell.blogspot.com/2009/05/converting-hexadecimal-or-binary-to.html*/ CREATE FUNCTION ConvertFromBase ( @value AS VARCHAR(MAX), @base AS BIGINT ) RETURNS BIGINT AS BEGIN -- just some variables DECLARE @characters CHAR(36), @result BIGINT, @index SMALLINT; -- initialize our charater set, our result, and the index SELECT @characters = '0123456789abcdefghijklmnopqrstuvwxyz', @result = 0, @index = 0; -- make sure we can make the base conversion. there can't -- be a base 1, but you could support greater than base 36 -- if you add characters to the @charater string IF @base < 2 OR @base > 36 RETURN NULL; -- while we have characters to convert, convert them and -- prepend them to the result. we start on the far right -- and move to the left until we run out of digits. the -- conversion is the standard (base ^ index) * digit WHILE @index < LEN(@value) SELECT @result = @result + POWER(@base, @index) * (CHARINDEX (SUBSTRING(@value, LEN(@value) - @index, 1) , @characters) - 1 ), @index = @index + 1; -- return the result RETURN @result; END
Debido a las particularidades del lenguaje T-SQL, para simplificar elegí la selección
elitista (sólo los dos mejores) como mecanismo para obtener los distintos padres.
El resultado final son dos listas: una que incluye todos los padres, con todos los detalles y otra
con el valor- número de generación más alto
SET nocount on -- declarar tabla variable que albergará resultados DECLARE @results table (secuencia int identity, NumGeneracion int, DNA varchar(33), x1 float, x2 float, valor float) DECLARE @i int, @dna varchar(33), -- hijo que estará siendo testeado @loop int, @dna1 varchar(33), -- mejor hijo @dna2 varchar(33), -- segundo mejor hijo @Poblacion int, -- Población que se está evaluando @k1 int, @k2 int, @NumGeneraciones int, @NumDescendencias int -- Número de generaciones a evaluar SET @NumGeneraciones = 1000 -- generaciones SET @NumDescendencias = 1000 -- descendencias -- Test rápido --SET @NumGeneraciones = 100 --SET @NumDescENDencias = 100 -- generar primera población SET @loop = @NumDescENDencias SET @Poblacion = 1 WHILE @loop > 0 BEGIN SET @dna='' SET @i=0 WHILE @i < 33 -- ya que el cromosoma tendrá una longitud de 33 bits BEGIN SET @dna = @dna + CAST(CAST(RAND() * 2 as int) as varchar(1)) -- generamos uno a uno cada bit SET @i = @i+1 END -- Una vez generado el cromosoma, pasamos a calcular x1, x2 y el valor de f DECLARE @valor float DECLARE @var1 dec DECLARE @x1 float DECLARE @x2 float DECLARE @var2 dec SET @var1 = CAST(SUBSTRING(@dna, 1, 18)as dec) -- extraemos 18 primeros bits SET @var2 = CAST (SUBSTRING (@dna,19,15)as dec) -- extraemos restantes 15 -- Convertimos a decimal. Usamos Función personal (código adjunto) SET @x1= CAST( dbo.convertfromBase(@var1,2)as float) SET @x2= CAST( dbo.convertfromBase(@var2,2)as float) SET @x1 = -3+( @x1 * 0.00005760 ) SET @x2 = 4.1+( @x2 * 0.0000518) SET @valor = (SELECT 21.5 +( @x1 *sin(4*3.14159*@x1))+(@x2* SIN(20*3.14159*@x2))) INSERT INTO @results (NumGeneracion, DNA, x1, x2, valor) SELECT @Poblacion, @dna, @x1, @x2,@valor SET @loop = @loop -1 END --Loop Generaciones WHILE @Poblacion <= @NumGeneraciones BEGIN --Aplicamos una selección elitista: salvamos los mejores padres SELECT @k1 = secuencia FROM @results WHERE NumGeneracion=@Poblacion AND valor = (SELECT max(valor) FROM @results WHERE NumGeneracion=@Poblacion) SELECT @k2 = secuencia FROM @results WHERE NumGeneracion=@Poblacion AND secuencia <> @k1 AND valor = (SELECT max(valor) FROM @results WHERE NumGeneracion=@Poblacion AND secuencia <> @k1) SELECT @dna1 = DNA FROM @results WHERE NumGeneracion=@Poblacion AND valor = (SELECT max(valor) FROM @results WHERE NumGeneracion=@Poblacion) SELECT @dna2 = DNA FROM @results WHERE NumGeneracion=@Poblacion AND DNA <> @dna1 AND valor = (SELECT max(valor) FROM @results WHERE NumGeneracion=@Poblacion AND DNA <> @dna1) -- Borramos el resto DELETE FROM @results WHERE NumGeneracion = @Poblacion AND secuencia not in (@k1, @k2) SET @Poblacion = @Poblacion + 1 -- hijos loop SET @loop = @NumDescendencias WHILE @loop > 0 BEGIN -- aproximadamente mitad padre1 -mitad padre2 SET @i = CAST(RAND()* 33 as int)+1 SET @dna = left(@dna1,@i) + right(@dna2, 33 - @i) -- + 5 mutaciones SET @dna=STUFF(@dna,CAST(RAND()* 33 as int)+1,1, CAST(CAST(RAND() * 2 as int) as varchar(1))) SET @dna=STUFF(@dna,CAST(RAND()* 33 as int)+1,1, CAST(CAST(RAND() * 2 as int) as varchar(1))) SET @dna=STUFF(@dna,CAST(RAND()* 33 as int)+1,1, CAST(CAST(RAND() * 2 as int) as varchar(1))) SET @dna=STUFF(@dna,CAST(RAND()* 33 as int)+1,1, CAST(CAST(RAND() * 2 as int) as varchar(1))) SET @dna=STUFF(@dna,CAST(RAND()* 33 as int)+1,1, CAST(CAST(RAND() * 2 as int) as varchar(1))) -- hijos nuevos y salvar resultados SET @var1 = CAST(SUBSTRING(@dna, 1, 18)as dec) SET @var2 = CAST (SUBSTRING (@dna,19,15)as dec) SET @x1= CAST( dbo.convertFrombase(@var1,2)as float) SET @x2= CAST( dbo.convertFrombase(@var2,2)as float) SET @x1 = -3+( @x1 * 0.00005760 ) SET @x2 = 4.1+( @x2 * 0.0000518) --21.5 + x1 sin(4πx1) + x2 sin(20πx2) SET @valor = (SELECT 21.5 +( @x1 *sin(4*3.14159*@x1))+(@x2* sin(20*3.14159*@x2))) INSERT INTO @results (NumGeneracion, DNA, x1, x2, valor) SELECT @Poblacion, @dna, @x1, @x2,@valor SET @loop = @loop - 1 END END -- Sumario SELECT * FROM @results WHERE NumGeneracion <= @NumGeneraciones ORDER BY NumGeneracion asc, valor desc -- Resultado Final SELECT NumGeneracion,(valor) FROM @results WHERE valor in (SELECT max(valor) FROM @results) ORDER BY NumGeneracion DESC
viernes, 17 de septiembre de 2010
Error 1053 al instalar SQL Server 2005
El problema de instalar SQL 2005 en una máquina con procesador multinúcleo. Microsoft lo explica aqui.
En mi caso, sólo funcionó copiar los ficheros Sqlos.dll y sqlservr.exe de otra máquina con SP3 actualizado a la carpeta BINN
Viene todo en el enlace (y en castellano)
:
En mi caso, sólo funcionó copiar los ficheros Sqlos.dll y sqlservr.exe de otra máquina con SP3 actualizado a la carpeta BINN
Viene todo en el enlace (y en castellano)
:
viernes, 23 de abril de 2010
Failed:(-1073548784)
Failed:(-1073548784) Executing the query "EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'YYY-MM-DD00-006T00:00:00' " failed with the following error: "Error executing extended stored procedure: Invalid Parameter". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Revisar que no dejasteis en blanco la carpeta/path y la extensión cuando creasteis el plan de mantenimiento.
Suscribirse a:
Entradas (Atom)