Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: sir от 27 Февраля 2025, 09:49:11

Название: Работа с несколькими SQL базами данных на разных серверах
Отправлено: sir от 27 Февраля 2025, 09:49:11
Здравствуйте!
Одна SQL база для трендов установлена локально и прописана в настройках проекта, а SQL база для рецептов находится в локальной сети на другом сервере и работают с ней другие пользователи в другом программном обеспечении. Возможно ли работать с разными SQL базами данных на разных серверах, если в настройках задается доступ (логин-пароль) только к одному SQL серверу?

Как я понимаю, в скрипте Проекта на Delphi надо прописать авторизацию с логином и паролем для удаленного SQL сервера? Не подскажите как это сделать?
Вот пример:
Код: (delphi)
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, SqlExpr;

type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
SQLQuery1: TSQLQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
SQLConnection1.DriverName := 'MySQL';
SQLConnection1.Params.Values['HostName'] := '10.0.0.10';
SQLConnection1.Params.Values['Database'] := 'mydatabase';
SQLConnection1.Params.Values['User_Name'] := 'myusername';
SQLConnection1.Params.Values['Password'] := 'mypassword';
SQLConnection1.Open;

SQLQuery1.SQL.Text := 'SELECT * FROM mytable';
SQLQuery1.Open;

DBGrid1.DataSource := DataSource1;
DataSource1.DataSet := SQLQuery1;
end;

end.
Название: Re: Работа с несколькими SQL базами данных на разных серверах
Отправлено: Simple Scada от 27 Февраля 2025, 11:18:15
Здравствуйте.

На данный момент из скриптов можно работать только с той БД, которая указана в настройках проекта (https://simple-scada.com/help/manual/dbset.html). Также поддерживается работа со связанными серверами SQL Server (https://clck.ru/3Gdvh5). Возможно, в будущем добавим функционал для работы со сторонними БД, но какие-либо сроки появления такого функционала назвать, к сожалению, не можем.
Название: Re: Работа с несколькими SQL базами данных на разных серверах
Отправлено: ZWolol от 03 Марта 2025, 08:03:39
Связал два сервера SQL 2008 Enterpice.
Сделал запрос с выводом данных в TM_Table:
Код: (delphi)
sQuery:= 'SELECT ID_Channel,MeasureDate,Value,State FROM [ASDK-VZ2].Telemera.dbo.Currents;';
tblMy.RunSQL(sQuery, tsSaveFixRow);
Выводит ошибку:

Invalid use of schema or catalog for OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.
The OLE DB provider "SQLNCLI10" for linked server information about the error.

В SQL Менеджере видно таблицы, но при запросе:
Код
SELECT [ID_Channel]
      ,[MeasureDate]
      ,[Value]
      ,[State]
  FROM [ASDK-VZ2].[Telemera].[dbo].[Currents]
GO
Выдает:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2" reported an error. The provider did not give any information about the error.
Msg 7312, Level 16, State 1, Line 1
Invalid use of schema or catalog for OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.

С чем это связано и что надо посмотреть?

P.S.
Установил виртуал бокс, на нем прилинковал базу и прочитал данные!!!
Извиняюсь за беспокойство.
Видимо есть какая-то хрень на моей машине... :(
Название: Re: Работа с несколькими SQL базами данных на разных серверах
Отправлено: ZWolol от 25 Марта 2025, 15:36:17
Запустил сервер и клиент на своей машине, а базу указал на сетевом сервере Win64 с SQL 2008 Enterprice (кластерная).
На сервере прилинковал три рабочих SQL сервера Win32 Prifessional (два 2005 и 2012).

И все работает влет.
Только пришлось в настройках линковки отключить все, кроме доступа к данным и RPC.
Там же можно указать имя/пароль для удаленного подключения к серверам (если отличаются).

Даже не вижу необходимости добавлять скаде работу с несколькими серверами если все решается на уровне операционки.

P.S.
У меня стоит 5 сек на повторе скрипта с запросом SELECT, но в реале получается 7 сек.
Название: Re: Работа с несколькими SQL базами данных на разных серверах
Отправлено: ZWolol от 27 Марта 2025, 16:01:38
Все что может случиться, обязательно случится. (Закон Мэрфи).

15 лет назад я предлагал своему начальству изменить название сервера опроса,
но мне запретили это делать потому, что маловероятно, что кто-то назовет свою программу "server.exe" и вот оно случилось!!! :)

Ваш сервер периодически закрывается потому, что наша служба ServerRun следит за работой Server.exe, периодически посылает ему запросы и в случае отсутствия ответов считает его зависшим и перезапускает приложение.
Снимается зависшее приложение с помощью taskkill, вот потому и нет ничего в логах вашего сервера.

Спустя столько времени мне все таки придется переименовать нашу прогу и поправить ServerRun.
Но хоть теперь причина найдена...