-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdbo.usp_dba_createlinkedserver.sql
More file actions
186 lines (163 loc) · 10.4 KB
/
Copy pathdbo.usp_dba_createlinkedserver.sql
File metadata and controls
186 lines (163 loc) · 10.4 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
USE [NBA]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*------------------------------------------------------------------------------
Procedure Name: dbo.usp_dba_createlinkedserver
Purpose: Create and configure a linked server entry for SQL Server instances
+
+
+ Project: T-SQL-Scripts
+
+
+ Date Created: 2025-10-15
+
+
+ Author: Ludwig Mark
+
+
+ Parameters: see signature (@linkedservername, @linkedserverip, username/password)
+
+
+ Returns: None
+
+
+ Notes:
+
+ - Uses dynamic SQL to call sp_addlinkedserver and sp_addlinkedsrvlogin
+
+
+ Dependencies:
+
+ - Requires appropriate sysadmin or server-level rights to create linked servers
+
+
+ Security:
+
+ - Avoid placing credentials in scripts; restrict access to this procedure
+
+
+ LICENSE: MIT
+
+------------------------------------------------------------------------------*/
CREATE PROCEDURE [dbo].[usp_dba_createlinkedserver]
@linkedservername NVARCHAR(128)
, @linkedserverip NVARCHAR(128)
, @linkedserverusername NVARCHAR(128)
, @linkedserverpassword NVARCHAR(128)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @addlinkedserver NVARCHAR(max) = '
DECLARE master.dbo.sp_addlinkedserver
@server = '''+@linkedservername+''',
@srvproduct=''sqlserver'',
@provider=''SQLNCLI'',
@datasrc='''+@linkedserverip+'''
DECLARE master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='''+@linkedservername+''',
@useself=''false'', @locallogin=null,
@rmtuser='''+@linkedserverusername+''',
@rmtpassword='''+@linkedserverpassword+'''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''collation compatible'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''data access'',
@optvalue=''true''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''dist'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''pub'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''rpc'',
@optvalue=''true''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''rpc out'',
@optvalue=''true''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''sub'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''connect timeout'',
@optvalue=''0''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''collation name'',
@optvalue=null
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''lazy schema validation'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''query timeout'',
@optvalue=''0''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''use remote collation'',
@optvalue=''false''
DECLARE master.dbo.sp_serveroption
@server=N'''+@linkedservername+''',
@optname=''remote proc transaction promotion'',
@optvalue=''true''
'
DECLARE @addlinkedfailure NVARCHAR(max) =
'***********************' +
'Server Creation Failed!' + char(10) +
'***********************'
DECLARE @addlinkedsuccess NVARCHAR(max) =
'****************************' +
'Server Created Successfully!' + char(10) +
'****************************' +
'Try: "select * from '+QUOTENAME(@linkedservername)+'.master.sys.servers"'
DECLARE @addlinkedtest NVARCHAR(max) = '
select *
into #temp
from '+QUOTENAME(@linkedservername)+'.master.sys.servers
drop table #temp
'
DECLARE @addlinkeddrop nvarchar(max) = '
DECLARE master.dbo.sp_dropserver
@server='''+@linkedservername+''',
@droplogins=''droplogins''
'
BEGIN TRY
EXEC (@addlinkedserver);
BEGIN TRY
EXEC (@addlinkedtest);
PRINT @addlinkedsuccess;
END TRY
BEGIN CATCH
BEGIN TRY
EXEC (@addlinkeddrop);
PRINT @addlinkedfailure
END TRY
BEGIN CATCH
PRINT @addlinkedfailure
END CATCH
END CATCH
END TRY
BEGIN CATCH
BEGIN TRY
EXEC (@addlinkeddrop);
PRINT @addlinkedfailure
END TRY
BEGIN CATCH
PRINT @addlinkedfailure
END CATCH
END CATCH
END
GO