martes, 7 de septiembre de 2021

Creación de usuarios e inicios de sesión de Azure SQL Database

 Este consejo rápido habla sobre la creación de usuarios e inicios de sesión de Azure SQL Database después de haber realizado una configuración inicial de su servidor de Azure SQL Database y haber definido el usuario administrador.

Entonces, si, por ejemplo, desea crear un nuevo inicio de sesión / usuario SQL con permisos db_owner en una base de datos, puede hacerlo conectándose al servidor de Azure SQL Database a través de SQL Server Management Studio o Azure Data Studio y crear el inicio de sesión y usuario con sentencias T-SQL.

Por ejemplo, si desea crear un nuevo inicio de sesión SQL en Azure SQL Database (es decir, llámelo " testLogin1 ") y desea convertir este inicio de sesión en un db_owner en la base de datos " TestDB1 ", entonces el proceso sería el siguiente:

Paso 1: Conéctese como administrador a su servidor de base de datos SQL de Azure

Conéctese a su servidor de Azure SQL Database como administrador a través de SQL Server Management Studio o Azure Data Studio desde las instalaciones.

 

Paso 2: cambie a la base de datos "maestra"

Cambie el contexto de la ventana de consulta a la base de datos "maestra" cambiando a la base de datos "maestra" desde el cuadro de selección de la base de datos en SQL Server Management Studio o Azure Data Studio.

 

Paso 3: Cree el inicio de sesión del servidor

Cree el inicio de sesión con la siguiente declaración T-SQL (puede cambiar, por supuesto, el nombre de inicio de sesión y la contraseña en consecuencia para usar una contraseña segura):

- crear inicio de sesión SQL en la base de datos maestra
CREAR INICIO DE SESIÓN testLogin1
WITH PASSWORD = '<Strong_Password_Goes_ Here>' ;

 

Paso 4: crear el usuario de la base de datos

En otra ventana de consulta en SSMS o Azure Data Studio que está conectado a su servidor de base de datos Azure SQL, seleccione la base de datos para la que desea crear el usuario (es decir, en este ejemplo "TestDB1") y conceda permisos (es decir, db_owner) y ejecute el debajo de las declaraciones de T-SQL (puede cambiar, por supuesto, el siguiente T-SQL para otorgar los permisos / roles de base de datos que desee):

- agregar usuario de base de datos para la prueba de inicio de sesión
CREAR USUARIO [testLogin1]
DESDE INICIO DE SESIÓN [testLogin1]
WITH DEFAULT_SCHEMA = dbo;

 

Paso 5: Otorgue permisos de base de datos al inicio de sesión / usuario

El último paso es otorgar el inicio de sesión con los permisos de base de datos deseados. En el siguiente ejemplo, otorgaré permisos de db_owner para testLogin1:

- agregar usuario a la (s) función (es) de la base de datos (es decir, db_owner)
ALTER ROLE db_owner AÑADIR MIEMBRO [testLogin1];

 

martes, 27 de julio de 2021

Replication – Execution of filter stored procedure xxxx failed. See the SQL Server errorlog for more information.

 Execution of filter stored procedure 1288585956 failed. See the SQL Server errorlog for more information.

The Log-Scan Process failed to construct a replicated command from log sequence number (LSN) {005765c9:0000bb74:0002}. Back up the publication database and contact Customer Support Services.


El error anterior indica que Log Reader Agent está bloqueado en LSN {0001d651: 00002a49: 0006} y no puede leer ni crear un comando para este LSN.
Como el Agente de lectura de registros está atascado en el LSN, no avanza y ya que solo podemos tener 1 Agente de lectura de registros en Replicación transaccional que se utiliza para todas las publicaciones. Todas las publicaciones muestran errores en el monitor de replicación y no avanzan.
Verificamos la transacción en el LSN {0001d651: 00002a49: 0006}.

En el error anterior, vemos "Error en la ejecución del procedimiento almacenado del filtro 2048634987"
. Verificamos el ID del procedimiento almacenado del filtro de sysarticles y descubrimos que era el procedimiento almacenado del filtro para la tabla dbo.booking



SELECT * FROM sys.dm_cdc_errors


Sin embargo, la entrada de el procedimiento almacenado del filtro faltaba en las tablas sysobjects, lo que indica que el procedimiento almacenado del filtro se eliminó por alguna razón. Para confirmar esto usamos la siguiente consulta

select * from (select art.name as article_name

, art.pubid as publication_id

, art.artid as article_id

, art.filter as filter_proc_id

, isnull(obj.name,'## MISSING!! ##') as filter_proc_name

from sysarticles art left outer join sys.objects obj

on art.filter = obj.object_id

where art.filter > 0)as results

solución

Eliminé la publicación, la recreé y luego creé una suscripción sin inicialización. esto impidió una instantánea completa.

O

Entonces, para resolver esto, identificamos las publicaciones de la tabla syspublications con pubid = 750.
Luego eliminamos el filtrado para los 3 artículos anteriores y los volvimos a agregar y el procedimiento almacenado se volvió a crear.
Luego recreamos la instantánea para esa publicación y marcamos su suscriptor para reinicializar.
El agente de instantáneas volvió a crear la instantánea y el agente de lector de registros comenzó a funcionar correctamente sin errores.
Verificamos el Monitor de replicación y el error desapareció.

lunes, 28 de junio de 2021

Error MSB3644 The reference assemblies for .NETFramework,Version=v4.7 were not found.

Severity Code Description Project File Line Suppression State

Error MSB3644 The reference assemblies for .NETFramework,Version=v4.7 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks GestionInventario.WebApi C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 1180  


Descargar he instalar:

https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net47-developer-pack-offline-installer


The reference assemblies for framework “.NETFramework,Version=v4.6.2” were not found

 Error MSB3644 The reference assemblies for framework ".NETFramework,Version=v4.6.2" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend. C:\RPR\Dev\Libraries\Common\Common.csproj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets 


Resulta que había instalado .NET Framework v4.6.2, no el Developer Pack para 4.6.2.


https://www.microsoft.com/en-us/download/details.aspx?id=53321



jueves, 1 de abril de 2021

Script para obtener el tamaño de las tablas de la base de datos sql server

SET NOCOUNT ON

DBCC UPDATEUSAGE(0)

-- Table row counts and sizes.

DECLARE @sizes TABLE

(

    [name] NVARCHAR(128),

    [rows] CHAR(11),

    reserved VARCHAR(18),

    data VARCHAR(18),

    index_size VARCHAR(18),

    unused VARCHAR(18)

)

INSERT @sizes EXEC sp_msForEachTable 'EXEC sp_spaceused ''?'''

SELECT *

FROM   @sizes

ORDER BY convert(int, substring(data, 1, len(data)-3)) desc


martes, 23 de febrero de 2021

Eliminar saltos de línea en celdas Excel

  1.  Seleccionamos el rango de celdas en donde deseamos quitar los saltos de linea.
  2.  Pulsamos Ctrl + B para entrar en el cuadro de diálogo Buscar y reemplazar
  3.  En la ficha Reemplazar y en el apartado Buscar, pulsamos Ctrl + J para insertar el código de salto de línea. En Reemplazar con, escribimos un espacio o dejamos en blanco
  4. Terminamos pulsando el botón Reemplazar todos y cerramos el cuadro de diálogo.

o

Con una fórmula: SUSTITUIR y CARACTER

Cuando queramos conservar las celdas originales y copiarlas en otro rango en una sola fila, usaremos esta fórmula:


=SUSTITUIR(B2;CARACTER(10);"  ")    


lunes, 15 de febrero de 2021

LINQ Group By y select collection c#

Objeto 


 items.GroupBy(item => item.Order.Customer)

     .Select(group => new { Customer = group.Key, Items = group.ToList() })
     .ToList();

Lista de enteros:

  List<int> solicitudes = partidasPAD.PartidaPAD.GroupBy(x => x.idSolicitud).Select(grupo => grupo.Key).ToList();