唯一のサーバーコンポーネントがデータベース(アプリケーションサーバーなし)であるクライアントサーバーアプリケーションのライセンスシステムを開発中です。他のサーバーにインストールできない、またはバックアップ/復元を介して転送できない特定のサーバーに対してライセンスを発行したいと考えています。この考え方は、T-SQLクエリを介してユニーク識別子を生成し、パブリック/プライベート署名を使用して、その識別子に対してのみ動作するアクティベーショントークンを返すことです。T-SQLを使用してSQL Serverコンピュータを一意に識別
T-SQL(CLRストアドプロシージャまたは関数なし)のみを使用して、繰り返し可能な方法でSQL Serverを一意に識別する方法はありますか?たとえば、インスタンスのインストール時に取得される、取得可能な一意の値がありますか?
を編集してください:NEWSEQUENTIALID()
のMAC部分が機能するかどうかを確認してください(this methodを参照)。クラスター/フェイルオーバーのセットアップでシステムがフェイルオーバーした場合、または1次LANアダプターが変更された場合、新しいハードウェアで再活動化されるまで「猶予期間」に入ることがあります。問題は、これが「十分にユニーク」なのかどうかです。
クラスタ/フェイルオーバーについて忘れないでください。マシンとデータベースの間に必ずしも1:1があるわけではありません –
確かに、良い点です。クラスタまたはフェールオーバーの設定のすべてのインスタンスで同じIDが返されるのが最善の方法です。 –
一意のハードウェア情報がSQL Serverに直接公開されていないので、任意の答えが 'xp_cmdshell'を必要とすると思います。 – JNK