Уникальная идентификация компьютера SQL Server через T-SQL - PullRequest
0 голосов
/ 09 августа 2011

Мы работаем над системой лицензирования для клиент-серверного приложения, где единственным компонентом сервера является база данных (без сервера приложений). Мы хотели бы выдать лицензии на конкретный сервер, который не может быть установлен на каком-либо другом сервере или перенесен с помощью резервного копирования / восстановления. Идея состоит в том, чтобы с помощью запроса T-SQL сгенерировать unqiue-идентификатор, а затем использовать публичную / частную подпись для возврата токена активации, который работает только для этого идентификатора.

Есть ли способ однозначно идентифицировать SQL Server, повторяемым способом, используя только T-SQL (без хранимых в CLR процедур или функций)? Например, существует ли какое-то уникальное извлекаемое значение, которое создается при установке экземпляра?

Редактировать : Может быть, часть MAC NEWSEQUENTIALID() будет работать (см. этот метод ). Если система переключается при сбое в настройках кластера / отработки отказа или если основной адаптер локальной сети заменен, она может ввести «льготный период», в течение которого она будет продолжать работать до тех пор, пока не будет повторно активирована на новом оборудовании. Вопрос в том, является ли это «достаточно уникальным».

1 Ответ

0 голосов
/ 09 августа 2011

Даже если вы получаете уникальный идентификатор, потенциальная проблема - проверка в T-SQL.База данных не проверена.Что если они взломают T-SQL и удалят часть активации.Клиент использует T-SQL напрямую или у вас есть клиентское приложение.Если у вас есть клиентское приложение, то почему CLR не вариант?Он был взломан, но я работал с приложением, которое генерировало хэш имени сервера при установке и сохраняло его в базе данных.Затем клиент сравнил бы сохраненный хеш с динамическим хешем, чтобы определить, был ли он на другом сервере.Проблема заключалась в том, что если имя сервера было таким же, то его можно было обойти, а алгоритм хэширования находился в клиентском приложении, поэтому с трудом его можно было разоблачить.

Adian Я хотел бы поблагодарить вас за ответы на мои вопросы.

Если вы загляните в sysObjects и другие системные таблицы / представления, я думаю, вы сможете найти что-то, чтобы уникально идентифицировать сервер и базу данных.Как и при восстановлении на другом сервере, вы должны удалить пользователя и создать его заново, даже если имя совпадает, внутренний идентификатор отличается.Если бы они восстановили базу данных master и application, они могли бы сделать все идентичным, но они должны были бы знать, чтобы сделать это.При базовой установке SQL может генерировать уникальный идентификатор где-то, поскольку имеет смысл, что Microsoft захочет иметь уникальный идентификатор для репликации, других функций и лицензирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...