2

SQL Server 2005 と Visual Studio 2008 を使用して C# Windows アプリケーションを構築し
ています。アプリケーションをクライアント コンピューターに展開します。これをこの順番でやる

  1. アプリで作成したのと同じユーザー/パス (つまり、sa/パス) を使用して SQL Server 2005 をインストールします。
  2. Windows アプリケーションの msi ファイルを実行します。私のデータベースをSQL Server 2005にインストールします。

アプリケーションを実行しようとすると、クライアント コンピューターのマシン名と SQL サーバー インスタンス名が異なるために失敗します。接続文字列でエラーが発生しています。ターゲットのコンピューター名と SQL サーバー インスタンスを抽出し、展開中に同じものをアプリケーション設定に保存する方法が必要です (実行時に接続文字列を作成できるように、C# コードで使用します)。

問題を解決するために、クライアントのコンピューターにビジュアルスタジオをインストールし、ソースコードを編集してマシン名とSQLサーバーインスタンスを変更しています。次に、Windows アプリケーションが実行されます。この方法で問題を解決したくはありませんが、展開時にパラメーターを設定するか、より良い方法を提案するために任せることができる方法が必要です。

私はあなたに私を助けてもらいたいです。

4

3 に答える 3

0

Google は多くのオプションを提供します。データベースのコピー中に正しい手順を実行しましたか。

次のリンクに従ってくださいhttp://blogs.msdn.com/b/sreekarm/archive/2009/09/11/move-a-database-from-one-server-to-another-server-in-sql-server-2008 .aspx

これはあなたの答えになりますDBA Stack Exchange

また、表示された正確なエラー メッセージを投稿してください。問題を特定するのに役立ちます。

于 2012-12-21T08:54:19.337 に答える
0

SQL CE を使用するには、多くの再作業が必要になります。

完全なインストール順序は次のとおりです。

  1. Windows Installer 3.1 をインストールします (インストールされていない場合)。
  2. .Net 2.0 をインストールします (インストールされていない場合)
  3. SQL がまだインストールされていないかどうかを確認します。

HKLM "SOFTWARE\Microsoft\Microsoft SQL Server\${インスタンス名}\MSSQLServer\CurrentVersion" "CurrentVersion"

次に、SQL Server をインストールする必要があります。

${installer_path}\SQLEXPR.exe -q /norebootchk /qn reboot=ReallySuppress addlocal=all INSTANCENAME=${instance_name} SAPWD=${password} SECURITYMODE=SQL SQLBROWSERAUTOSTART=1 SQLAUTOSTART=1 AGTAUTOSTART=1 ASAUTOSTART=0 RSAUTOSTART=0 DISABLENETWORKPROTOCOLS=0 ERRORREPORTING=1 SQMREPORTING=0 ENABLERANU=0 ADDUSERASAADMIN=1

SQL Server インスタンスに接続するには、データ リンク プロパティ ダイアログを使用します。インスタンスへの接続方法をユーザーに明確に指示する必要があります。例えば

ここに画像の説明を入力

.\Instance_Name 構文を使用する場合、"." ドットは、問題を解決するクライアント PC の名前を表します。これを接続文字列でも使用します。

于 2012-12-21T08:54:32.100 に答える
0

したがって、私が正しく理解していれば、ソース コード内に接続文字列をハードコードしたことになります。そしてもちろん、あなたは自分の費用で、これがいかに悪い考えであるかを発見しました。

その接続文字列を app.config ファイルに保存する必要があります。このようにして、アプリケーションを顧客にインストールするときに、構成ファイルを変更するだけでコードを準備できます。

app.config に接続文字列を挿入するには:

  • プロジェクトを右クリックして を選択Propertiesし、 Settingsページに移動します。これにより、プロジェクトのファイルが作成settings.settingsされ、プロパティの GUI エディターが開きます。
  • 列名に文字列を挿入します (例: testConnection)
  • [タイプ] 列からタイプを選択しConnectionStringます
  • 値列に、開発マシンで有効な接続文字列を挿入します

app.config を開くと、次のConnectionStringsような名前の新しいセクションが表示されます。

 <connectionStrings>
    <add name="ProjectName.Properties.Settings.testConnection" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\mytemp.mdb;User Id=admin;Password=;" />
  </connectionStrings>

コードを一度だけ修正する時が来ました。
ハードコーディングされた接続文字列があるすべての場所で、そのコードを次のようなものに置き換えます

 string constring = ConfigurationManager.ConnectionStrings["ProjectName.Properties.Settings.testConnection].ConnectionString;

ここにいる間に、SqlServer Express 2012 の LocalDB バージョンを使用して、SqlServer をインストールする必要もなくなるかどうかを確認してください。

于 2012-12-21T12:27:07.110 に答える