Мне нужно получить некоторые данные из удаленной базы данных, это своего рода «менеджер обновлений», поэтому мое приложение подключится к этому удаленному серверу, чтобы проверить, есть ли новые обновления.
Я используюВеб-сервер для выполнения работы «рукопожатия и проверки», но затем я подключаюсь непосредственно к удаленному серверу SQL для получения данных.
Веб-сервер вернет информацию для входа в систему (serverIP + Порт, база данных, пользователь и пароль), конечно, пользователь является пользователем только с правами чтения данных (в подмножестве таблиц).
Что мне нужно сделать, это выполнить несколько удаленных запросов для получения необходимых данных.Вот что я написал (и это работает):
CREATE PROCEDURE QueryRemoteServer
(@SERVER nvarchar(50),@FieldNames nvarchar(500), @DB nvarchar(50),
@Tablename nvarchar(100), @Login Nvarchar(50),@pwd Nvarchar(50))
AS
BEGIN
/* Creation of Linked Server including the If exists check */
if exists (Select name From sys.servers Where [Name]=@SERVER)
exec sp_dropserver @SERVER, 'droplogins'
exec sp_addlinkedserver @SERVER
/* Creation of the login according to values returned from webserver */
exec sp_addlinkedsrvlogin @SERVER, 'FALSE', NULL, @Login, @pwd
/* exec the query (for simplicity I omitted the JOIN job) */
exec ('SELECT ' + @FieldNames +
' FROM ['+ @Server + '].' + @Db + '.dbo.' + @Tablename)
/* drop the created linked server */
exec sp_dropserver @SERVER, 'droplogins'
END
Клиент просто запустит что-то вроде этого:
exec QueryRemoteServer '127.0.0.1 , 4455','Field1, Field2',
'MyRemoteDB','MyRemoteTable','GuestUser','GuestPassword'
Не могли бы вы рассказать мне свое мнение об этом подходе и сказатьмне, какие основные недостатки / преимущества вы видите?