jueves, 10 de marzo de 2022

Microsoft.Exchange.WebServices.Data -- The underlying connection was closed

 Error al usar Microsoft.Exchange.WebServices.Data para conectarme a Office 365 Outlook y extraer correos electrónicos y sus archivos adjuntos.


Solucion:

Office365 requiere que use TLS 1.2 si el servidor en el que lo está ejecutando ejecuta una versión anterior de .Net framework




System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

se asegurará de que su código siempre use TLS 1.2 (siempre y cuando el framework no sea realmente antiguo)


miércoles, 2 de marzo de 2022

Obtener días del mes SQL

 Con la siguiente consulta te permite obtener una lista de los dias de un mes, pide como parametros de entrada el mes y el año

declare @MES INT
DECLARE @AÑO INT
DECLARE @FechaInicio date
DECLARE @FechaFin date


SET @MES = 2
SET @AÑO = 2022

 SELECT @FechaInicio = CONVERT(DATE,CONVERT(NVARCHAR,@AÑO)+'-'+CONVERT(NVARCHAR,@MES)+'-01')

select @FechaFin = EOMONTH(@FechaInicio)

 
--Aquí creamos la variable tabla con los valores
DECLARE @DiaMes TABLE ([Fecha] DATE,[Año] int,[Mes] int,[Dia] int,[noDia] int, [dsDia] nvarchar(50))

    WHILE(@FechaInicio<=@FechaFin) 
        BEGIN   
            INSERT @DiaMes([Fecha],[Año],[Mes] ,[Dia] ,[noDia], [dsDia] )
            SELECT  @FechaInicio, YEAR(@FechaInicio), MONTH(@FechaInicio), 
DAY(@FechaInicio),DATEPART(weekday,@FechaInicio),(case DATEPART(dw,@FechaInicio) when 2 
then 'Lunes' when 3 then 'Martes' when 4 then 'Miércoles' when 5 then 'Jueves' when 6
 then 'Viernes' when 7 then 'Sábado' when 1 then 'Domingo' end
            SET @FechaInicio = DATEADD(DD,1,@FechaInicio)
        END
select * from @DiaMes

Resultado:



Obtener Descripcion de dia sql

 De esta forma podrías obtener el nombre del día de la semana pero lo devolvería en inglés.

SELECT DATENAME(weekday, getdate()) AS nombreDiaSemana;

Por lo tanto, lo más recomendable sería traer el número del día de la semana y mediante el uso de casos ir determinando el nombre del día de la semana.


SELECT (case DATEPART(dw,getdate()when 2 then 'Lunes' when 3 then 'Martes' when 4 then 'Miércoles' when 5 then 'Jueves' when 6 then 'Viernes' when 7 then 'Sábado' when 1 then 'Domingo' endAS nombreDiaSemana;

lunes, 21 de febrero de 2022

Calcular fechas entre rango de fechas sql server

 declare @feIni  datetime ='2022-02-21'

declare @fefin datetime ='2022-03-21'


CREATE TABLE #TablaTemporal (FECHA DATE);

WHILE(@feIni<@fefin) 
BEGIN
    INSERT INTO #TablaTemporal
    SELECT  @feIni
SET @feIni = DATEADD(DD,1,@feIni)
END


select * from #TablaTemporal

martes, 4 de enero de 2022

Crear un esquema SQL

Crea un esquema en la base de datos actual. La transacción CREATE SCHEMA también puede crear tablas y vistas dentro del nuevo esquema y establecer permisos GRANT, DENY o REVOKE en esos objetos.

 CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]  
  
<schema_name_clause> ::=  
    {  
    schema_name  
    | AUTHORIZATION owner_name  
    | schema_name AUTHORIZATION owner_name  
    }  
  
<schema_element> ::=   
    {   
        table_definition | view_definition | grant_statement |   
        revoke_statement | deny_statement   
    }  

  1.   En el Explorador de objetos, conéctese a una instancia de Motor de base de datos.
  2. En la barra Estándar, haga clic en Nueva consulta.
Ejemplo:

 CREATE SCHEMA History;

lunes, 3 de enero de 2022

Sql Server Eliminar registros de una tabla de forma rapida

 En algunas ocasiones es necesario borrar muchos registros de una tabla, pero al tener índices o al estar en uso el borrado puede demorar muchísimo tiempo.

con esta solución va borrando por partes haciendo un ciclo, se detiene cuando termina de borrar.


InicioBloque:
delete top (20) [TRABLE] where   [CONDITION]
IF @@ROWCOUNT > 0 
GOTO InicioBloque

martes, 28 de diciembre de 2021

Cambiar contraseña de usuario SQL Azure

El siguiente ejemplo cambia la contraseña de inicio de sesión UsuarioSQL una contraseña segura.

 ALTER LOGIN UsuarioSQL WITH PASSWORD = '<enterStrongPasswordHere>';


Cambiar la contraseña de un inicio de sesión al iniciar sesión como inicio de sesión

Si está intentando cambiar la contraseña del inicio de sesión con el que está conectado actualmente y no tiene el ALTER ANY LOGIN permiso, debe especificar la OLD_PASSWORD opción.

 ALTER LOGIN UsuarioSQL WITH PASSWORD = '<enterStrongPasswordHere>' OLD_PASSWORD = '<oldWeakPasswordHere>';