lunes, 18 de mayo de 2015

SQL SERVER: Validar si existe columna en una tabla

if NOT exists(select * from sys.columns
            where Name = N'ColumnaA' and Object_ID = Object_ID(N'Tabla'))
begin
 ALTER TABLE [dbo].[Tabla] ADD [ColumnaA] int NULL;
end
else
begin
    Print 'La columna ColumnaA ya existe en la tabla Tabla.'
end

SQL SERVER: Borrar procedimiento almacenado de forma segura

IF EXISTS (SELECT * FROM sys.objects WHERE   object_id = OBJECT_ID(N'NOMBRE_PROC') AND type IN ( N'P', N'PC' ))
begin
drop PROCEDURE [dbo].[NOMBRE_PROC]
end
GO
CREATE dbo.NOMBRE_PROC
(...).....

domingo, 3 de mayo de 2015

MSDTC y .Net: MSDTC no está disponible en el servidor 'X'.

El error que indica que el Microsoft Distributed Transaction Coordinator no está disponible puede significar a que debemos configurarlo, de esta manera ya no recibimos el mensaje de error en .Net cuando utilizamos TransactionScope.

1º En ventana de ejecución poner: comexp.msc

2º Expanda Servicios de componentes, equipos, Mi PC, Administrador de transacciones distribuidas, haga DTC Localy, a continuación, haga clic en Propiedades.

3º En el tab Segumiento puede activar "Seguimiento de todas las trasacciones".

sábado, 2 de mayo de 2015

Sql Server: Eliminar usuario de base de datos.

Para realizar esta tarea lo mejor es estar logueado con otro usuario con privilegios y talvez pueda ser necesario reiniciar el servicio de SQL Server para cancelar todas las posibles conexiones a la bases de datos asociadas al usuario que queremos eliminar. Comandos SQL para eliminar usuario de una base de datos:

Averiguar a cuáles esquemas pertenece el usuario:

SELECT name FROM  sys.schemas WHERE principal_id = USER_ID('usuarioPruebas')

Con la lista anterior, se reemplaza en esta siguiente consulta la palabra SchemaName, por el verdadero nombre del esquema para eliminar al usuario totalmente:

ALTER AUTHORIZATION ON SCHEMA::SchemaName  TO dbo 
GO
DROP USER usuarioPruebas