you ver usuarios usuario the situation should resetting obtener error correct conectados actual sql-server clrstoredprocedure tsqlt

sql-server - the - sql server ver usuarios conectados



El SID del propietario de la base de datos registrado en la base de datos maestra difiere del SID del propietario de la base de datos (5)

Cuando intento instalar tSQLt en una base de datos existente, aparece el siguiente error:

El SID del propietario de la base de datos registrado en la base de datos maestra difiere del SID del propietario de la base de datos registrado en la base de datos ''''. Debe corregir esta situación restableciendo el propietario de la base de datos '''' utilizando la instrucción ALTER AUTHORIZATION.


Se agregó esto a la parte superior del script tSQLt.class.sql

declare @user varchar(50) SELECT @user = quotename(SL.Name) FROM master..sysdatabases SD inner join master..syslogins SL on SD.SID = SL.SID Where SD.Name = DB_NAME() exec(''exec sp_changedbowner '' + @user)


Necromaning:
Si no desea usar las vistas SQL-Server 2000 (en desuso), use esto:

-- Restore sid when db restored from backup... DECLARE @Command NVARCHAR(MAX) SET @Command = N''ALTER AUTHORIZATION ON DATABASE::<<DatabaseName>> TO <<LoginName>>'' SELECT @Command = REPLACE ( REPLACE(@Command, N''<<DatabaseName>>'', QUOTENAME(SD.Name)) , N''<<LoginName>>'' , QUOTENAME ( COALESCE ( SL.name ,(SELECT TOP 1 name FROM sys.server_principals WHERE type_desc = ''SQL_LOGIN'' AND is_disabled = ''false'' ORDER BY principal_id ASC ) ) ) ) FROM sys.databases AS SD LEFT JOIN sys.server_principals AS SL ON SL.SID = SD.owner_sid WHERE SD.Name = DB_NAME() PRINT @command EXECUTE(@command) GO

También previene errores en bases de datos o usuarios con nombres extraños, y también corrige errores si no hay ningún usuario asociado (usa el inicio de sesión de sa).


Este problema puede surgir cuando una base de datos se restauró de una copia de seguridad y el SID del propietario de la base de datos no coincide con el SID del propietario que figura en la base de datos maestra. Aquí hay una solución que usa la instrucción "ALTER AUTHORIZATION" recomendada en el mensaje de error:

DECLARE @Command VARCHAR(MAX) = ''ALTER AUTHORIZATION ON DATABASE::[<<DatabaseName>>] TO [<<LoginName>>]'' SELECT @Command = REPLACE(REPLACE(@Command , ''<<DatabaseName>>'', SD.Name) , ''<<LoginName>>'', SL.Name) FROM master..sysdatabases SD JOIN master..syslogins SL ON SD.SID = SL.SID WHERE SD.Name = DB_NAME() PRINT @Command EXEC(@Command)


Aplique la secuencia de comandos a continuación en la base de datos que obtiene el error:

EXEC sp_changedbowner ''sa'' ALTER DATABASE [database_name] SET TRUSTWORTHY ON


Cuando desee importar un nuevo clr, si recibió este mensaje de error simplemente configure Sa como propietario de su databse, como a continuación, así debería ser el trabajo

Alterar la autorización en la base de datos :: [] a [sa]