7

これは、クライアント サーバーのすべての初心者が探している基本的な問題だと思います。私はC#.NET Client-Serverソフトウェアを開発しました。

アプリケーションの基本的な概要

アプリケーションには組み込みのデータベースが含まれているため、サーバーが利用できない場合でも、ユーザーはローカル システムで利用可能なデータベースを使用できます。また、データベースがサーバーで利用可能な場合は、サーバー データベースが使用されます。ボタンをクリックするだけで、両方のデータベースsynchronizeを相互に接続できます。したがって、2 つの接続文字列があり、1 つはローカル システム用で、もう 1 つはサーバー用です。どちらも動的に作成されています。

For : Client Setup ->現在、Click One Application を使用しています。

  1. 私のクライアント システムは、アプリケーションと一緒にインストールするために使用するローカル データベースを使用します。

問題 1 :

SQL Server Express ベースのデータベースを展開しています。SQL Server 2008 などの前提条件を備えた clickone アプリケーションを作成しました。clickone をインストールすると、アプリケーションはエラーなしで適切にインストールされますが、アプリケーションの起動中に、アプリケーションがデータベースを見つけることができないというエラーが表示されますC:\Users\Xnor\AppData\Local\Apps\2.0\Data\N24R9574.9H1\V0Q1MX0C.0X9\....

stackoverflow を閲覧したところ、.mdfこの場所にコピーすると問題が解決することがわかりました。しかし、なぜこれが起こっているのですか。なぜ自分自身をコピーしないのですか?

この手動作業を回避できるように、DB をアプリケーションに永続的に接続する方法はありませんか?

.mdfどこでも、その場所にファイルをコピーするだけの指示で、それだけです。.mdfリソースに添付され、そこから使用できる可能性があり、提案可能であれば、機能する可能性のある方法はありますか。専門家のアドバイス、それを達成するための最良の方法を探しています。


サーバーの場合:

以前はインストールMicrosoft SQL Server Management Studio Expressしてから、そこにサーバー用のデータベースを作成し、IT はアプリケーションと連携して作業していました。

問題2

これらの手順をどのように実行できますか。IT 以外の人に、常にサーバーにインストールするように教え、そのMicrosoft SQL Server Management Studio Express上にデータベースを作成し、その後、接続文字列をアプリケーションに渡して機能させると、多くの問題が発生します。


したがって、私の基本的な要件は、インストール中にユーザーにスムーズなエクスペリエンスを提供することです。インストールを行っている人は背の高いオタクではありません。彼らはそれを行うことNext Next Nextができますが、それほど多くの構成を行うのは好きではありません。これを行う専門的な方法はありますか?これは、クライアント サーバー ソフトウェアで最も重要なことだと思いますが、これほど多くの構成を要求するようなソフトウェアは見たことがありません。

Click-one Deployment は非常に専門的ではないように見え、機能が非常に限られていると感じているため、使用したくありません。したがって、この要件を満たすことができる他の代替案を親切に提案してください。

また、これは非常に重要なことであり、グーグルやユーチューブで見つけることができた既製のチュートリアルはなく、このことを自動化する方法について正しい方向性を見つけるのに無力であるか、または手順を減らすことができます。

クライアント用とサーバー用の 2 つのセットアップをデプロイする準備ができました。

他の情報が必要な場合はお知らせください。素晴らしいサポートを楽しみにしています。よろしく。

4

6 に答える 6

1

問題 1: SQL データベースをアプリケーションに追加する - Visual Studio ソリューションを使用して行う必要があります。
データベースを使用するプロジェクトをクリックします (または、最初にそのフォルダーを作成することをお勧めします)、Ctrl+Shift+A>データ>ローカル データベース/サービス ベースのデータベースをクリックします。
次に、データベースの作成、接続文字列の変更などを行う必要があります。
プロジェクトは、ファイル パスが異なる可能性があるため、インストール時に調整および変更できる接続文字列を提供します。
このようにして、クリックワンスを使用してプロジェクトのインストール間でデータベースをコピーします。

注: データベースの種類 (SDF と MDF) の選択は、それほど難しい問題ではありません。
MDF を使用できる場合は、パフォーマンスと機能が優れていますが、SQLExpress をローカルにインストールする必要があります。

問題 2: SSMS (Menegment Studio) が必要ない、またはそのようなもの。
さて、アプリケーションを実行するサーバーにデータベースをインストールしていると私は信じがちです - そうすべきではありません。データベース専用のサーバーを使用します。
ただし、あなたの答えとして、それを改善するために2つのことが
できます.
次に、アプリケーションは (インストール部分で) SQLConnection.CreateDatabase を実行できます。これにより、モデルがコピーされ、必要に応じてデータベースが作成されます。
2. Yoy は、EntityFramework を使用するような新しいソリューションに移行できます。そこでクラスを開発すると、EF がストレージを担当します。

私はしばらく Clickonce を使用していませんが、テキストやロゴを使用してカスタマイズしたバージョンを作成できることは知っています。インストールファイルを作成できます。(Ctrl-Shift-A) インストール ファイルを作成するだけです (そこにあります)。ここでメソッドをオーバーライドし、必要なものを実行できます (ファイルのコピー、調整、要件チェックなど)。

于 2013-08-29T12:30:13.880 に答える
0

Balamurugan によって回避されたように、これには簡単な答えがあります。優れたサードパーティのインストーラーに支払います。それらは通常プログラム可能であるため、必要なことを正確に行うことができます。

または、MS セットアップ プロジェクトとカスタム インストーラー サービスの作成について詳しく学んでください。これはもっと多くの作業ですが、無料です (あなたの時間を除いて)。

于 2013-09-19T22:39:09.733 に答える
0

SQL Server Express をアプリケーションの一部としてサイレント インストールできませんか?

public bool InstallExpress()
            {

                //In both cases, we run Setup because we have the file.
                Process myProcess = new Process();
                myProcess.StartInfo.FileName = sqlExpressSetupFileLocation;
                myProcess.StartInfo.Arguments = "/qb " + BuildCommandLine();
                /*      /qn -- Specifies that setup run with no user interface.
                        /qb -- Specifies that setup show only the basic 
user interface. Only dialog boxes displaying progress information are 
displayed. Other dialog boxes, such as the dialog box that asks users if 
they want to restart at the end of the setup process, are not displayed.
                */
                myProcess.StartInfo.UseShellExecute = false;

                return myProcess.Start();

            }

このリンクは役に立つかもしれません

アプリがローカル データベースまたはサーバー データベースに接続するかどうかを検出できる場合は、アプリを開く際の舞台裏で、コードの一部である SQL Express ローカル データベースをインストールしてみてください。 IT 担当者が行う必要があります。

于 2013-08-29T23:06:14.060 に答える
0

クライアント - サーバー アプローチがあり、ネットワークがローカル LAN である場合でも、特定の理由はありますか?サーバー アプリケーションとデータベースをサーバーに、他のクライアントをクライアントにインストールしないでください。

于 2013-08-30T16:09:53.930 に答える