miércoles, 11 de septiembre de 2019

SQL SERVER | Tamaño de Tablas en Base de Datos


--Cursor que contiene todos los objetos que ocupan espacio

DECLARE objects_cursor CURSOR local fast_forward read_only FOR

  SELECT s.NAME + '.' + o.NAME

  FROM   sys.schemas s

         INNER JOIN sys.objects o

                 ON o.schema_id = s.schema_id

  WHERE

    --o.type = 'S' or --Tablas de sistema

    o.type = 'U' --or --Tablas de usuario



--o.type = 'V' or --Vistas (solo las indexadas devuelven tamaño)

--o.type = 'SQ' or --Cola de servicio

--o.type = 'IT' -- Tablas internas usadas p.e. por el Service Broker o los indices XML

--Tabla temporal para albergar los resultados

CREATE TABLE #results

  (

     NAME       SYSNAME,

     rows       CHAR(11),

     reserved   VARCHAR(18),

     data       VARCHAR(18),

     index_size VARCHAR(18),

     unused     VARCHAR(18)

  )



--Recorremos el cursor obteniendo la información de espacio ocupado

DECLARE @object_name AS SYSNAME



OPEN objects_cursor



FETCH next FROM objects_cursor INTO @object_name;



WHILE @@FETCH_STATUS = 0

  BEGIN

      INSERT INTO #results

      EXEC Sp_spaceused

        @object_name



      FETCH next FROM objects_cursor INTO @object_name;

  END;



CLOSE objects_cursor;



DEALLOCATE objects_cursor;



-- Quitamos "KB" para poder ordenar

UPDATE #results

SET    reserved = LEFT(reserved, Len(reserved) - 3),

       data = LEFT(data, Len(data) - 3),

       index_size = LEFT(index_size, Len(index_size) - 3),

       unused = LEFT(unused, Len(unused) - 3)



--Ordenamos la información por el tamaño ocupado

SELECT NAME,

       reserved / 1024   AS [Tamaño en Disco (MB)],

       data / 1024       AS [Datos (MB)],

       index_size / 1024 AS [Indices (MB)],

       unused / 1024     AS [No usado (MB)],

       rows              AS Filas

FROM   #results

ORDER  BY CONVERT(BIGINT, reserved) DESC



DROP TABLE #results 

martes, 6 de noviembre de 2018

ORACLE | Bloqueo de Tablas 2

select /*+ ordered
no_merge(L_WAITER)
no_merge(L_LOCKER) use_hash(L_LOCKER)
no_merge(S_WAITER) use_hash(S_WAITER)
no_merge(S_LOCKER) use_hash(S_LOCKER)
use_nl(O)
use_nl(U)
*/
/* first the table-level locks (TM) and mixed TM/TX TX/TM */
S_LOCKER.SID SID_LOCKER,
S_LOCKER.SERIAL# SERIAL#_LOCKER,
S_LOCKER.USERNAME USERNAME_LOCKER,
S_LOCKER.OSUSER OSUSER_LOCKER,
S_LOCKER.MODULE MODULE_LOCKER,
S_LOCKER.ACTION ACTION_LOCKER,
S_LOCKER.PROGRAM PROGRAM_LOCKER,
S_WAITER.SECONDS_IN_WAIT SECONDS_IN_WAIT,
S_WAITER.SID SID_WAITER,
S_WAITER.SERIAL# SERIAL#_WAITER,
S_WAITER.USERNAME USERNAME_WAITER,
S_WAITER.OSUSER OSUSER_WAITER,
S_WAITER.MODULE MODULE_WAITER,
S_WAITER.ACTION ACTION_WAITER,
S_WAITER.PROGRAM PROGRAM_WAITER,
'Table lock (TM): '||O.OWNER||'.'||O.OBJECT_NAME||
' - Mode held: '||
decode(L_LOCKER.LMODE,
0, 'None', /* same as Monitor */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
'???: '||to_char(L_LOCKER.LMODE))||
' / Mode requested: '||
decode(L_WAITER.REQUEST,
0, 'None', /* same as Monitor */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
'???: '||to_char(L_WAITER.REQUEST))
SQL_TEXT_WAITER
from
V$LOCK L_WAITER,
V$LOCK L_LOCKER,
V$SESSION S_WAITER,
V$SESSION S_LOCKER,
dba_objects O
where S_WAITER.SID = L_WAITER.SID
and L_WAITER.TYPE IN ('TM','TX')
and S_LOCKER.sid = L_LOCKER.sid
and L_LOCKER.ID1 = L_WAITER.ID1
and L_WAITER.REQUEST > 0
and L_LOCKER.LMODE > 0
and L_WAITER.ADDR != L_LOCKER.ADDR
and L_WAITER.ID1 = O.OBJECT_ID
union all
select /*+ ordered
no_merge(L_WAITER)
no_merge(L_LOCKER) use_hash(L_LOCKER)
no_merge(S_WAITER) use_hash(S_WAITER)
no_merge(S_LOCKER) use_hash(S_LOCKER)
no_merge(L1_WAITER) use_hash(L1_WAITER)
no_merge(O) use_hash(O)
*/
/* now the (usual) row-locks TX */
S_LOCKER.SID SID_LOCKER,
S_LOCKER.SERIAL# SERIAL#_LOCKER,
S_LOCKER.USERNAME USERNAME_LOCKER,
S_LOCKER.OSUSER OSUSER_LOCKER,
S_LOCKER.MODULE MODULE_LOCKER,
S_LOCKER.ACTION ACTION_LOCKER,
S_LOCKER.PROGRAM PROGRAM_LOCKER,
S_WAITER.SECONDS_IN_WAIT SECONDS_IN_WAIT,
S_WAITER.SID SID_WAITER,
S_WAITER.SERIAL# SERIAL#_WAITER,
S_WAITER.USERNAME USERNAME_WAITER,
S_WAITER.OSUSER OSUSER_WAITER,
S_WAITER.MODULE MODULE_WAITER,
S_WAITER.ACTION ACTION_WAITER,
S_WAITER.PROGRAM PROGRAM_WAITER,
'TX: '||O.SQL_TEXT SQL_TEXT_WAITER
from
V$LOCK L_WAITER,
V$LOCK L_LOCKER,
V$SESSION S_WAITER,
V$SESSION S_LOCKER,
V$_LOCK L1_WAITER,
V$OPEN_CURSOR O
where S_WAITER.SID = L_WAITER.SID
and L_WAITER.TYPE IN ('TX')
and S_LOCKER.sid = L_LOCKER.sid
and L_LOCKER.ID1 = L_WAITER.ID1
and L_WAITER.REQUEST > 0
and L_LOCKER.LMODE > 0
and L_WAITER.ADDR != L_LOCKER.ADDR
and L1_WAITER.LADDR = L_WAITER.ADDR
and L1_WAITER.KADDR = L_WAITER.KADDR
and L1_WAITER.SADDR = O.SADDR
and O.HASH_VALUE = S_WAITER.SQL_HASH_VALUE;

martes, 30 de octubre de 2018

ORACLE | Bloqueo de Tablas

select /*+ ordered
no_merge(L_WAITER)
no_merge(L_LOCKER) use_hash(L_LOCKER)
no_merge(S_WAITER) use_hash(S_WAITER)
no_merge(S_LOCKER) use_hash(S_LOCKER)
use_nl(O)
use_nl(U)
*/
/* first the table-level locks (TM) and mixed TM/TX TX/TM */
S_LOCKER.SID SID_LOCKER,
S_LOCKER.SERIAL# SERIAL#_LOCKER,
S_LOCKER.USERNAME USERNAME_LOCKER,
S_LOCKER.OSUSER OSUSER_LOCKER,
S_LOCKER.MODULE MODULE_LOCKER,
S_LOCKER.ACTION ACTION_LOCKER,
S_LOCKER.PROGRAM PROGRAM_LOCKER,
S_WAITER.SECONDS_IN_WAIT SECONDS_IN_WAIT,
S_WAITER.SID SID_WAITER,
S_WAITER.SERIAL# SERIAL#_WAITER,
S_WAITER.USERNAME USERNAME_WAITER,
S_WAITER.OSUSER OSUSER_WAITER,
S_WAITER.MODULE MODULE_WAITER,
S_WAITER.ACTION ACTION_WAITER,
S_WAITER.PROGRAM PROGRAM_WAITER,
'Table lock (TM): '||U.NAME||'.'||O.NAME||
' - Mode held: '||
decode(L_LOCKER.LMODE,
0, 'None', /* same as Monitor */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
'???: '||to_char(L_LOCKER.LMODE))||
' / Mode requested: '||
decode(L_WAITER.REQUEST,
0, 'None', /* same as Monitor */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
'???: '||to_char(L_WAITER.REQUEST))
SQL_TEXT_WAITER
from
V$LOCK L_WAITER,
V$LOCK L_LOCKER,
V$SESSION S_WAITER,
V$SESSION S_LOCKER,
sys.OBJ$ O,
sys.USER$ U
where S_WAITER.SID = L_WAITER.SID
and L_WAITER.TYPE IN ('TM','TX')
and S_LOCKER.sid = L_LOCKER.sid
and L_LOCKER.ID1 = L_WAITER.ID1
and L_WAITER.REQUEST > 0
and L_LOCKER.LMODE > 0
and L_WAITER.ADDR != L_LOCKER.ADDR
and L_WAITER.ID1 = O.OBJ#
and U.USER# = O.OWNER#
union all
select /*+ ordered
no_merge(L_WAITER)
no_merge(L_LOCKER) use_hash(L_LOCKER)
no_merge(S_WAITER) use_hash(S_WAITER)
no_merge(S_LOCKER) use_hash(S_LOCKER)
no_merge(L1_WAITER) use_hash(L1_WAITER)
no_merge(O) use_hash(O)
*/
/* now the (usual) row-locks TX */
S_LOCKER.SID SID_LOCKER,
S_LOCKER.SERIAL# SERIAL#_LOCKER,
S_LOCKER.USERNAME USERNAME_LOCKER,
S_LOCKER.OSUSER OSUSER_LOCKER,
S_LOCKER.MODULE MODULE_LOCKER,
S_LOCKER.ACTION ACTION_LOCKER,
S_LOCKER.PROGRAM PROGRAM_LOCKER,
S_WAITER.SECONDS_IN_WAIT SECONDS_IN_WAIT,
S_WAITER.SID SID_WAITER,
S_WAITER.SERIAL# SERIAL#_WAITER,
S_WAITER.USERNAME USERNAME_WAITER,
S_WAITER.OSUSER OSUSER_WAITER,
S_WAITER.MODULE MODULE_WAITER,
S_WAITER.ACTION ACTION_WAITER,
S_WAITER.PROGRAM PROGRAM_WAITER,
'TX: '||O.SQL_TEXT SQL_TEXT_WAITER
from
V$LOCK L_WAITER,
V$LOCK L_LOCKER,
V$SESSION S_WAITER,
V$SESSION S_LOCKER,
V$_LOCK L1_WAITER,
V$OPEN_CURSOR O
where S_WAITER.SID = L_WAITER.SID
and L_WAITER.TYPE IN ('TX')
and S_LOCKER.sid = L_LOCKER.sid
and L_LOCKER.ID1 = L_WAITER.ID1
and L_WAITER.REQUEST > 0
and L_LOCKER.LMODE > 0
and L_WAITER.ADDR != L_LOCKER.ADDR
and L1_WAITER.LADDR = L_WAITER.ADDR
and L1_WAITER.KADDR = L_WAITER.KADDR
and L1_WAITER.SADDR = O.SADDR
and O.HASH_VALUE = S_WAITER.SQL_HASH_VALUE;

viernes, 3 de agosto de 2018

ASP.NET | Error al levantar aplicacion


ASP.NET Tiempo de espera



DotNet .basic Envio Correos

al error :
The remote certificate is invalid according to the validation procedure.

System.Net.ServicePointManager.ServerCertificateValidationCallback = _
Function(se As Object, _
cert As System.Security.Cryptography.X509Certificates.X509Certificate, _
chain As System.Security.Cryptography.X509Certificates.X509Chain, _
sslerror As System.Net.Security.SslPolicyErrors) True

viernes, 27 de julio de 2018

SQL SERVER | Consultar Excel

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
exec sp_configure 'Advanced', 1
RECONFIGURE
exec sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
exec sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO
sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OverRide
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE WITH OverRide
GO


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=d:\tmp\MCRESPALDO_06_07_2018.xlsx;HDR=YES','SELECT * FROM [mc$]')