私のプログラム用のこの更新ツールがあります。ツールは、このコード(vbとsql)でSQL Serverデータベースを更新します。RESTORE SQL Serverのc: users directoriesの.bakファイル
Dim sql As Process = Process.Start("sqlcmd.exe", Param + " -i update.sql -o log.txt")
Param
は、とりわけ.bak
ファイルmyprogram_update.bak
の名前が含まれています。
RESTORE DATABASE [myprogram_tmp]
FROM DISK = N'$(db_src)'
WITH FILE = 1,
MOVE N'myprogram_tmp' TO @mdf,
MOVE N'myprogram_tmp_log' TO @ldf,
NOUNLOAD, STATS = 5
@mdf
と@ldf
と
update.sql
開始は、SQL Serverの設定から読み込まれ、標準のパスです。
更新ツールは、お客様に出荷されており、通常、SQLサーバーは、ウィンドウのユーザーディレクトリ(Desktop
またはDownloads
など)で読み取ることができないという問題があります。しかし、多くの顧客はアーカイブをこれらのディレクトリに解凍してから、このエラーを受け取ります。
myprogram_update.bak/access deniedにアクセスできませんでした。
すべてのカスタマーサーバーの設定を変更できないため、これらのディレクトリで動作させる方法はありますか?私の考えの1つは、最初にセットアップを実行し、それをprogram files
に解凍することでしたが、スマートな解決策があるかもしれません。
編集:ツールは管理者モードで実行されます。
はDACPACまたはBACPACとして変更および/または初期データベースを出荷することを検討してください。展開するには、SQL Server自体に対するアクセス許可のみが必要です。限られた量のデータしかこの方法でサポートされませんが、スクリプトによるリストアよりも便利です(DACPACのプログラムによるデプロイの呼び出しはDacFxでサポートされています)。データベースプロジェクトは一般的に、バージョニングを完全にサポートするため、大きな勝利を収めています。 –