블로그 이미지
bedbmsguru

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • total
  • today
  • yesterday
2018. 10. 26. 21:50 SQL SERVER

DECLARE @Cursor CURSOR
DECLARE @ServerName NVARCHAR( 128)
DECLARE @ServerID INT
DECLARE @SQL VARCHAR( MAX)

--Create temp table to store results
IF object_id (N'tempdb..##LinkedServers') IS NOT NULL
                 DROP TABLE ##LinkedServers

CREATE TABLE ##LinkedServers
                 (
                 [LinkedServerID] INT IDENTITY( 1,1 ) NOT NULL,
                 [Name] SYSNAME NULL,
                 [ProvName] NVARCHAR (128) NULL,
                 [Product] NVARCHAR (128) NULL,
                 [DataSource] NVARCHAR (4000) NULL,
                 [ProvString] NVARCHAR (4000) NULL,
                 [Location] NVARCHAR (4000) NULL,
                 [Cat] SYSNAME NULL
                 )
--Get list of linked servers from system proc
INSERT INTO ##LinkedServers
EXEC [sys] .sp_linkedservers
--Add tested field to result set
ALTER TABLE ##LinkedServers ADD [TestSuccess] BIT

--Cursor over list of linked servers testing each
SET @Cursor = CURSOR FOR
                                                                                                 SELECT
                                                                                                                 [LinkedServerID],
                                                                                                                 [Name]
                                                                                                 FROM
                                                                                                                 ##LinkedServers
OPEN @Cursor
FETCH NEXT FROM @Cursor INTO
                                                                                                                 @ServerID,
                                                                                                                 @ServerName

WHILE (@@FETCH_STATUS = 0 )
BEGIN
                
                 SET @SQL =

                 '
                BEGIN TRY
                                EXEC sp_testlinkedserver [' + @ServerName + ']
                                UPDATE
                                                ##LinkedServers
                                SET
                                                [TestSuccess] = 1
                                WHERE
                                                [LinkedServerID] = ' + CAST(@ServerID AS VARCHAR) + '
                END TRY
                BEGIN CATCH
                                UPDATE
                                                ##LinkedServers
                                SET
                                                [TestSuccess] = 0
                                WHERE
                                                [LinkedServerID] = ' + CAST(@ServerID AS VARCHAR) + '
                END CATCH
                '
                 EXEC(@SQL )

                 FETCH NEXT FROM @Cursor INTO
                                                                                                                                 @ServerID,
                                                                                                                                 @ServerName
END

--Return results
SELECT
                 [Name] AS 'LinkedServerName',
                 [Product],
                 [TestSuccess]
FROM
                 ##LinkedServers

DROP TABLE ##LinkedServers

'SQL SERVER' 카테고리의 다른 글

Index 생성이 안되어 있는 Foreign key 찾기  (0) 2018.10.27
링크드 서버(linked Server)  (0) 2018.10.26
MDF DATA파일 사용량 조회  (0) 2018.10.26
Find Missing Index  (0) 2018.10.26
서비스팩(SERVICE PACK) 제거  (0) 2018.10.26
posted by bedbmsguru