Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save oscarandreu/0ffa704f9c13dd8830ff to your computer and use it in GitHub Desktop.
Save oscarandreu/0ffa704f9c13dd8830ff to your computer and use it in GitHub Desktop.
CREATE TABLE #LINKED
(
SRV_NAME nvarchar(100)
,SRV_PROVIDERNAME nvarchar(100)
,SRV_PRODUCT nvarchar(100)
,SRV_DATASOURCE nvarchar(100)
,SRV_PROVIDERSTRING nvarchar(100)
,SRV_LOCATION nvarchar(100)
,SRV_CAT nvarchar(100)
)
INSERT INTO #LINKED exec sp_linkedservers
DELETE FROM #LINKED WHERE SRV_NAME = @@SERVERNAME OR SRV_NAME = 'repl_distributor'
DECLARE @getid CURSOR
DECLARE @name NVARCHAR(100)
DECLARE @sqlCommand varchar(1000)
SET @getid = CURSOR FOR
SELECT name FROM master.dbo.sysdatabases
CREATE TABLE #RESULTS
(
[DataBase] nvarchar(100)
,LinkedServer nvarchar(100)
,ObjectName nvarchar(100)
,[ObjectType] nvarchar(10)
,Command nvarchar(max) NULL
,Step int NULL
,[Enabled] int
,Id nvarchar(50)
)
OPEN @getid
FETCH NEXT
FROM @getid INTO @name --@id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sqlCommand = 'USE '+ @name +
' INSERT INTO #RESULTS '+
' SELECT ''' +
@name +''' AS [Database]
, L.SRV_NAME as [LinkedServer]
, object_name(SC.id) as [ObjectName]
, SO.type as [ObjectType]
, SC.[text] as [Command]
, NULL
, 1
, SO.id
FROM syscomments SC WITH(NOLOCK)
JOIN sysobjects SO WITH(NOLOCK) ON SC.id = SO.id
JOIN #LINKED l ON SC.[text] LIKE ''%'' + L.SRV_NAME + ''%'' COLLATE DATABASE_DEFAULT '
EXEC (@sqlCommand)
FETCH NEXT
FROM @getid INTO @name
END
CLOSE @getid
DEALLOCATE @getid
USE [msdb]
GO
INSERT INTO #RESULTS
SELECT
'msdb'
, L.SRV_NAME as [LinkedServer]
, SJ.name as JobName
, 'J'
, SJS.command as Command
, SJS.step_id as [Step Id]
, SJ.enabled as [Enabled]
, SJ.job_id as [Job Id]
FROM dbo.sysjobs SJ
JOIN dbo.sysjobsteps SJS ON SJS.job_id = SJ.job_id
JOIN #LINKED L on SJS.command like '%' + L.SRV_NAME + '%'
INSERT INTO #RESULTS
SELECT
'msdb'
, L.SRV_NAME as [LinkedServer]
, SJ.name as JobName
, 'J'
, NULL as Command
, NULL as [Step Id]
, SJ.enabled as [Enabled]
, SJ.job_id as [Job Id]
FROM dbo.sysjobs SJ
JOIN master.dbo.sysservers s ON s.srvid = SJ.originating_server_id
JOIN #LINKED L on s.srvname = L.SRV_NAME
SELECT * FROM #RESULTS
--SELECT * FROM #LINKED L LEFT JOIN #RESULTS R ON L.SRV_NAME = R.LinkedServer
--WHERE R.LinkedServer IS NULL
--exec sp_helpdb
GO
drop table #RESULTS
drop table #LINKED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment