...o cambios de login sin cambio de dominio:
ALTER LOGIN [dominio\login WITH NAME=[nuevo dominio\login]
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
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)
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)
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
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 !!
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
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
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í
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
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.
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
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
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’
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’
Etiquetas:
alias,
error usuario,
huérfanos,
Ms SQL Server,
sp_addalias
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)
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)
Etiquetas:
login failure,
Ms SQL Server,
Ms SQL Server 2005,
VSS
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
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)
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
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 |
Suscribirse a:
Entradas (Atom)