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