Mostrando entradas con la etiqueta Ms SQL Server. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ms SQL Server. Mostrar todas las entradas

miércoles, 25 de enero de 2012

Migrar logins de dominio...

...o cambios de login sin cambio de dominio:

 ALTER LOGIN [dominio\login WITH NAME=[nuevo dominio\login]

jueves, 3 de febrero de 2011

SQL Server en clúster; cuántas IP se necesitan?

Para un clúster "failover" típico un mínimo de 4 (5 si también necesitais MSDTC en clúster):

Una para cada uno de los nodos (mínimo dos), servidor1 y servidor2
Una para el clúster, ClusterServidor1y2
Una para SQL Server, ClusterServidor1y2SQL
Una para MSDTC (casi mejor ponerlo y no tener que usarlo que añadirlo más tarde)

martes, 1 de febrero de 2011

Gartner reconoce a Microsoft como líder en BI

La plataforma de BI de Microsoft consigue los mejores resultados en el  anual "Magic Quadrant" de Gartner desbancando a otras como Oracle, IBM o SAP.
Aquí tenéis el informe  (en inglés)

miércoles, 26 de enero de 2011

Borrar planes de mantenimiento

Si la opción botón derecho - borrar no funciona:

Identificar el id del plan a borrar:

Select * from msdb..sysmaintplan_plans

Borrar las referencias a ese plan en las sigueintes tablas:


delete from sysmaintplan_plans where id = 'XXXXXXX-XXXX-XXX-XXXX-XXXXXXXXX'
delete from sysmaintplan_log where plan_id = 'XXXXXXX-XXXX-XXX-XXXX-XXXXXXXXX'
 delete from sysmaintplan_subplans where plan_id ='XXXXXXX-XXXX-XXX-XXXX-XXXXXXXXX'

Ahora ya deberíamos borrar los trabajos asociados sin ningún problema

miércoles, 17 de noviembre de 2010

Versiones de SQL Server: Base de datos

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, 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

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:

  1. 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.
  2. Realiza copias de seguridad de todos los datos de tablas y catálogos de texto, registros de seguimiento de cambios y metadatos.
  3. 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.
  4. Reanuda el servicio MSFTESQL y el llenado de los índices de texto.
Un poco más de información sobre full-text en este enlace (en inglés)
Sobre la propiedad FULLTEXTCATALOGPROPERTY en los libros en linea o aquí tenéis la info

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!

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)

jueves, 14 de octubre de 2010

Seminarios gratuitos online

PragmaticWorks ofrece unos interesantes seminarios online gratuitos (en inglés)
 Más información aquí

miércoles, 4 de junio de 2008

SQL Server 2005: Memoria, procesador y otros números

Todo surgió esta mañana cuando me pidieron un informe acerca de cuánta memoria podía soportar SQL Server y cuál era el límite de datos que podía manejar.

Estos enlaces merece la pena ternelos a mano:

Memoria soportada por SQL Server 2005

Memoria soportada por Windows
Procesadores soportados por SQL Server 2005
Máximas capacidades de SQL Server 2005

Sarbanes-Oxley I

Durante las últimas semanas los auditores han estado examinado si algunas de nuestras bbdd de finanzas cumplían o no con la ley Sarbanes-Oxley (SOX)

La Ley Sarbanes Oxley nace en Estados Unidos con el fin de monitorear a las empresas que cotizan en bolsa, evitando que las acciones de las mismas sean alteradas de manera dudosa, mientras que su valor es menor. Su finalidad es evitar fraudes y riesgo de bancarrota, protegiendo al inversor (http://es.wikipedia.org/wiki/Acta_Sarbanes-Oxley)

En diferentes entradas os iré poniendo las respuestas y pruebas presentadas a las preguntas de los auditores. Como vereís todo es bastante subjetivo. Algunas son fáciles de implementar y contestar; otras en cambio... si vuestra empresa sigue ese modelo qué os voy a contar.

Esta vez, los auditores fijaron su atención en:

- Controles de seguridad de sistemas
- Acceso a bbdd
- Backup y recovery
- Almacenamiento y protección de datos
- Recuperación de datos
- Procedimientos de Change Managment
- Vulnerabilidades
- Monitorización y respuesta a incidentes

(vamos, que prácticamente todo)


Para los administradores de SQL es un alivio la aparición de SQL 2005 ya que ofrece más posibilidades a la hora de satisfacer lo requerimientos de SOX. Os pongo un enlace interesante al respecto
Además, Microsoft tiene una herramienta interesante.
Lo que aún sigue en SQL 2000 sigue siendo la gran pesadilla.

miércoles, 30 de abril de 2008

Pasos para resolver problemas de conectividad

Os recomiendo echar un vistazo a esta entrada publicada hoy mismo por el equipo de SQL Protocols, en la que muestran algunos pasos a seguir para resolver los problemas de conectividad con SQL Server, esos que tan a menudo aparecen y tantos quebraderos de cabez dan alos administradores.

Establecen 6 tipos de razones:

1- Red
2- Configuración de SQl Server
3- Firewall
4-Driver en cliente
5-Configuración de la aplicación
6-Autentificación y logon

Para cada una recomiendan el uso de herramientas como ping, nslookup, osql
y apuntan hacia qué mirar para localizar el problema

miércoles, 9 de abril de 2008

Fin del soporte a MS SQL Server 2000

Ayer, día 8, oficialmente Microsoft dejó de dar soporte, digamos "normal" a sql 2000. El soporte extendido (hablando en plata, pagando) llegará hasta 2013 (aún hay tiempo)

En esta página están las fechas de caducidad de SQL Server

miércoles, 19 de marzo de 2008

Eliminar usuarios alias

Los alias en SQL sirven para mapear un usuario en una bbdd. A partir de la versión 7.0 se sustituyen por los ‘Roles’, pero se conservan por compatibilidad con versiones anteriores.
Si la bbdd se crea a partir de versiones anteriores (backups o sp_attach) os encontraréis que estos alias aparecen como usuarios huérfanos . Sin emabargo en el Enterprise Manager o Managment Studio no hay señal de ellos.
Un ejemplo de cómo aparecen en sysusers o sys.sysusers :

status 16
name \nombre
roles NULL
altuid 5
hasdbaccess 0
islogin 1
isntname 0
isntgroup 0
isntuser 0
issqluser 0
isaliased 1
issqlrole 0
isapprole 0

Si analizamos el procedimiento sp_addalias, vemos que status= 16 indica que el usuario es un alias.
-- INSERT SYSUSERS ROW --
insert into sysusers select
@newuid, @status | 16, @loginame, @sid, 0x00,
getdate(), getdate(), @targuid, NULL

La barra inclinada [\] es otro distintivo que SQL Server añade al crear un nuevo alias con el fin de evitar conflictos en names space :

- ALTER NAME TO AVOID CONFLICTS IN NAME SPACE --
select @loginame = '\' + @loginame


i se intenta elimiar el alias con sp_dropalias resulta el siguiente error:

Server: Msg 15401, Level 11, State 1, Procedure sp_dropalias, Line 49
Windows NT user or group '[\nombre]' not found. Check the name again.

Sp_helpuser ‘\nombre’ tambíen da error:

Server: Msg 15198, Level 16, State 1, Procedure sp_helpuser, Line 189
The name supplied ([\nombre ]) is not a user, role, or aliased login.

La causa es que el alias está huérfano; el/los usuario/s a los que estaba asociado no existen en la base de datos.
La solución es crear un nuevo usuario al que se le asignará el mismo sid :

sp_addlogin @loginame = 'test, @passwd = 'test', @sid = 0x sid del alias

Y ahora ya se puede eliminar el alias:

Sp_dropalias ‘\nombre’

viernes, 7 de marzo de 2008

VSS y NT Authority system login failure

SQL Server 2005 instala automáticamente el servicio SQL Server VSS Writer sin permiso, ni consentimiento; ni siquiera da la opción de configurarlo!

Este servicio lo emplean softwares de backup para, entre otras cosas, obtener información de archivos (de datos) abiertos (usandos por el motor SQl Server) (para más información recomiendo que leáis este artículo)

Windows 2003 incluye un servicio similar: VSSVC.exe (Volume Sow Copy Service)

Mediante una traza podemos ver qué hacen estos dos servicios:

SQL Server Writer:

select name, recovery_model_desc, state_desc, CONVERT(integer, is_in_standby) from master.sys.databases

Y para cada base de datos la siguiente consulta

select rtrim(physical_name),rtrim(type_desc),rtrim(state_desc), is_name_reserved from sys.master_files where DB_ID(N'database_name_here') = database_id


VSSVC.exe:

Exactamente lo mimso pero con otra sintáxis:

select name,convert (int,status) from master.dbo.sysdatabases

Y sobre cada bbdd:

select rtrim(filename),status & 64 from sysaltfiles where DB_ID(N'database_name_here') = dbid

Problema: Login failed for user 'NT AUTHORITY\SYSTEM'

Los dos servico VSS arrancan con 'local system account' . Una de las recomendaciones más básicas (recogio en el 'Best Practises' de Microsoft incluso) es la de eliminar los accesos de la cuenta 'builtin\administrators' (en SQL 2000 y 2005). en SQL2005 aparece una nueva cuenta, NT AUTHORITY\SYSTEM, ¿ similar a 'builtin'? Si ambas cuentas se eliminan, comienzan los 'login failures'

Como no tenemos control sobre lo que hacen los 2 servicios VSS (Volume Shadow Copy Service y/o SQL Server VSS Writer) o lo que pueden hacer a petición de un programa de backup, no me parece buena idea arrancar estos servicios con una cuenta que sea sysadmin de SQL Server (aunque esto eliminaría el problema de los login failures)


Como tampoco controlamos el software y los procedimientos de backup no parece buena elección desactivar los servicios, ya que podríamos estar cargándonos el sistema de backup de archivos abiertos.


Solucion intermedia:

En SQL 2000 añadir el login NT AUTHORITY\SYSTEM con permisos read-only sobre la master

En SQL 2005 limitar los permisos de NT AUTHORITY\SYSTEM a read-only sobre la master


Temas relacionados

Full text search también utiliza nt authority\system, y no sé si esta solucion afectaría a su funcionamiento pero eso es otra historia.

(entrada creada en colaboración con Javier González)

lunes, 3 de marzo de 2008

DBCC Checktable

Según los libros en pantalla de SQL, este comando comprueba la integridad de todas las páginas y estructuras que constituyen la tabla o vista indicada
Pero además, en conjunción con Dbcc traceon (2704) muestra un lista de todas las celdas que contienen datos del tipo date-time corruptos

Dbcc traceon (2704)
Dbcc checktable (tablename)
Dbcc traceoff (2704)



Copiar permisos de un usuario

Os pongo un sencillo script que puede ser de utilidad si queremos copiar los permisos que un usuario tiene sobre los distintos objetos de una bbdd del tipo:

Grant References ON XTable TO user GO
Grant Select ON XTable TO user GO

El script genera a su vez otros scripts para poder reproducir estos permisos en otra bbdd



use db
go

create table #dba_user_rights(
Owner sysname,
Object sysname,
Grantee sysname,
Grantor sysname,
ProtectType char(10),
Action varchar(20),
Columna sysname
)

insert into #dba_user_rights EXEC ('sp_helprotect NULL, ''usuario''')


select protecttype + ' ' + action + ' ON ' + object + ' TO ' + grantee + ' GO 'from #dba_user_rights


drop table #dba_user_rights