April 18, 2012

sp_droplinkedsrvlogin (Transact-SQL MetaData) Definition

Please note: that the following source code is provided and copyrighted by Microsoft and is for educational purpose only.
The meta data is from an SQL 2012 Server.

I have posted alot more, find the whole list here.

Goto Definition or MetaData

Definition:

sys.sp_droplinkedsrvlogin(nvarchar @rmtsrvname
, nvarchar @locallogin)

MetaData:

 create procedure sys.sp_droplinkedsrvlogin  
@rmtsrvname sysname,
@locallogin sysname
as
declare @localid int

-- DISALLOW USER TRANSACTION
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_droplinkedsrvlogin')
return (1)
end

-- CHECK PERMISSIONS
if not (has_perms_by_name(null, null, 'alter any login') = 1)
begin
EXEC %%System().AuditEvent(ID = 1380207692, Success = 0, TargetLoginName = @locallogin, TargetUserName = NULL, Role = NULL, Object = NULL, Provider = NULL, Server = @rmtsrvname)
raiserror(15247,-1,-1)
return (1)
end
else
EXEC %%System().AuditEvent(ID = 1380207692, Success = 1, TargetLoginName = @locallogin, TargetUserName = NULL, Role = NULL, Object = NULL, Provider = NULL, Server = @rmtsrvname)

BEGIN TRAN

-- VALIDATE/LOCK SERVER NAME --
EXEC %%LinkedServer ( Name = @rmtsrvname ) . Lock ( Exclusive = 1 )
IF @@ERROR <> 0
begin
ROLLBACK TRAN
raiserror(15015,-1,-1,@rmtsrvname)
return (1)
end

-- CHECK LOCAL USER NAME IF GIVEN
select @localid = 0
if @locallogin is not null
begin
-- share-lock the local login
EXEC %%LocalLogin ( Name = @locallogin ) . Lock ( Exclusive = 0 )
IF @@ERROR = 0
select @localid = principal_id from sys.server_principals
where name = @locallogin and type in ('S', 'U')
if @localid = 0
begin
-- THERE WILL BE NO LinkedLogins, SO ONLY AN ERROR IF NO NT-NAME OUT THERE --
IF suser_sid(@locallogin) IS NULL
BEGIN
ROLLBACK TRAN
raiserror(15007,-1,-1,@locallogin)
return (1)
END

-- "SUCCESS" --
COMMIT TRAN
return(0)
end
end

-- IF MAPPING EXISTS FOR THIS SID, REMOVE IT --
IF EXISTS (SELECT * FROM sys.linked_logins WHERE
server_id IN (SELECT server_id FROM sys.servers where name = @rmtsrvname)
AND local_principal_id = @localid)
BEGIN
EXEC %%LinkedServer(Name=@rmtsrvname).RemoveLinkedLogin(LocalID=@localid)
END

-- EMDEventType(x_eet_Drop_Linked_Server_Login), EMDUniversalClass(x_eunc_Linked_Server), src major id, src minor id, src name
-- -1 means ignore target stuff, target major id, target minor id, target name,
-- # of parameters, 5 parameters
EXEC %%System().FireTrigger(ID = 236, ID = 102, ID = 0, ID = 0, Value = @rmtsrvname,
ID = 101, ID = @localid, ID = 0, Value = NULL,
ID = 2, Value = @rmtsrvname, Value = @locallogin, Value = NULL, Value = NULL, Value = NULL, Value = NULL, Value = NULL)

-- SUCCESS --
COMMIT TRAN
return(0) -- sp_droplinkedsrvlogin

No comments:

Post a Comment

Total Pageviews