1

VB.NET を使用してアプリケーションを開発し、SQL SERVER Express をデータベース バックエンドとして使用しました。アプリケーションには 5 つのユーザー プロファイルがあります (各ユーザー プロファイルは異なるサービスを提供します)。

導入要件 : アプリケーションは、10 ~ 20 台のマシンを備えた LAN に導入する必要があります。任意のマシンから任意のユーザー プロファイルにアクセスできます。データベース エントリへの変更は、すべてのマシンに反映される必要があります。

この展開をどのように達成すべきかについて混乱しています。私の研究によると:

1. データベースは 1 台のマシンに配置する必要があります。このマシンはデータベース サーバーとして機能します。

私の問題 : ローカル マシン上のデータベースへのアクセスには慣れていますが、リモート データベースへのアクセス方法を教えてください。対処する必要があるのは接続文字列だけですか、それとも他にも問題がありますか? SQL SERVER をすべてのマシンにインストールする必要がありますか?それともサーバー マシンにのみインストールする必要がありますか? 並行性の問題 (複数のユーザーが同じデータに同時にアクセス/変更すること) に対処する必要がありますか? それとも、データベース エンジンによって処理されますか?

2. アプリケーションは、次の 2 つの方法でデプロイできます。サーバー上の共有ネットワーク ドライブに実行可能ファイルを保存します。各マシンのデスクトップにショートカットを提供します。ii. 実行可能ファイル自体を各マシンに保存します。

私の問題 : アプローチ 1 はどのように機能しますか? (複数のマシンで実行されている実行可能ファイルの 1 つのインスタンス ? :s) アプローチ 2 では、データベース エントリの変更はすべてのマシンに適切に反映されますか? アプローチ 2 で、アプリケーションに変更があった場合、すべてのマシンでそれを更新する方法はありますか? (各マシンに再デプロイする以外)どのアプローチが望ましいですか?すべてのマシンに .NET Framework をインストールする必要がありますか?

他のシステム変更 (ファイアウォール、セキュリティ、アクセス許可) を行う必要がありますか? 各マシンにオペレーティング システムをインストールする選択肢が与えられた場合、そのようなアプリケーション環境にはどのバージョンの Windows が適していますか?

ネットワーク上にマルチユーザー データベース アプリケーションを展開するのはこれが初めてです。

4

2 に答える 2

0

質問 1: 「プロファイル」ごとに SQL Server の「ロール」を作成する必要があります。特定のユーザーには、1 つ以上の「役割」が割り当てられます。テーブル、ビュー、ストアド プロシージャ、およびトリガーのそれぞれに、1 つ以上のロールを割り当てる必要があります。これは厄介なビジネスです。これが、DBA がほとんどの場合、のんびり過ごすために多額のお金を受け取る理由です (冗談です。私を投票しないでください)。

質問 2: サーバーに「リモート接続」すると、サーバー画面が表示されますが、これはワークステーションのプレゼンテーションよりもかなり鈍いものです。「ワンクリック」を読んでください。これにより、ホスト上の更新されたアプリケーションを検出し、更新をユーザーのマシンに自動的に展開することができます。これにより、何かを修正するたびに約 20 台のマシンにアップグレードをインストールするというかなり面倒な作業がなくなります。

于 2013-06-21T03:55:50.243 に答える
0

すべてのマシンに実際にアクセスできるため、タスクは比較的簡単です。選択した db サーバーに SQL Express をインストールします。インストーラーで「詳細オプションを非表示」を無効にする必要があります。これにより、TCP/IP と SQL Browser サービスを有効にすることができます。また、混合モード認証が必要な場合もあります-アプリと、ネットワークがドメインかピアツーピアかによって異なります。ご承知のとおり、接続文字列を変更する必要があります。また、サーバー上の Windows ファイアウォールの既定の構成では、データベース エンジンへのアクセスがブロックされます。ブラウザー サービスと SQL サーバー自体のファイアウォールで例外を開く必要があります。これらを、ポート番号などとしてではなく、exe の例外として開きます。または、サーバーと外の世界の間にファイアウォールがある場合は、サーバーのファイアウォールをオフにすることもできます。あなたがそれを機能させている間、少なくとも一時的に。いいえ、ワークステーションに SQL Server コンポーネントをインストールする必要はありません。同時実行の問題は、アプリケーションで処理する必要があります。失礼なことを言いたくはありませんが、これを認識していない場合は、アプリを本番環境にデプロイする準備ができていない可能性があります。並行性に関して正確に何をする必要があるかは、アプリケーションの要件と使用しているデータ アクセス テクノロジの両方によって異なります。アプリケーションが主に新しいレコードを入力するために使用され、後でそれらを読み取るだけの場合は、同時実行性を処理するコードをあまり多くしなくても済む可能性があります。問題が発生するのは、ユーザーが既存のレコードを同時に編集しているシナリオですが、少なくとも基本的な処理を行う必要があります。クライアントexeの場所を再確認してください-あなたの提案のいずれかが機能します。最も簡単なのは、.msi ファイルを使用して各マシンにローカル インストールする方法です。msi のマスター コピーをサーバーに配置できます。ログイン スクリプト、グループ ポリシーなど、または実際に clickonce を使用して実行できます。この段階でシンプルに保つために、.msi から各マシンにインストールするだけです。すでに十分な複雑さがあるように思えます。サーバー上の exe の 1 つのコピーは、Terminal Server Citrix などによってより洗練された方法で処理できます。いずれにしても、アプリが正しく動作すると仮定すると、はい、すべての変更が同じデータベースに対して行われ、すべてのワークステーションに表示されます。はい、すべてのマシンに .net フレームワークが必要です。ただし、すでに存在している可能性があります。Windows のさまざまなバージョンには、さまざまなバージョンの Fx が組み込まれており、Windows Update を介して更新されます。もちろん、exeをビルドしたバージョンにもよります。そうですね、その中に何か役立つものがあることを願っています。幸運を。

于 2013-06-24T11:05:21.340 に答える