Ich habe dieses Update-Tool für mein Programm. Das Tool aktualisiert die SQL Server-Datenbank mit diesem Code (vb und sql).RESTORE. BAK-Datei von C: Benutzer Verzeichnisse auf SQL Server
Dim sql As Process = Process.Start("sqlcmd.exe", Param + " -i update.sql -o log.txt")
Param
enthält den Namen der Datei .bak
myprogram_update.bak
unter anderem.
update.sql
beginnt mit
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
und @ldf
sind Standardpfade von den SQL Server-Einstellungen lesen.
Das Update-Tool wird an Kunden ausgeliefert und das Problem ist, dass SQL-Server normalerweise Benutzer-Verzeichnisse von Fenstern wie Desktop
oder Downloads
nicht lesen dürfen. Aber viele Kunden entpacken das Archiv in diese Verzeichnisse und dann erhalten sie diesen Fehler.
Zugriff auf myprogram_update.bak/Zugriff verweigert nicht möglich.
Ich kann die Einstellungen auf jedem Kundenserver nicht ändern, gibt es also eine Möglichkeit, damit diese Verzeichnisse funktionieren? Eine Idee von mir war, zuerst ein Setup auszuführen und es auf program files
zu entpacken, aber vielleicht gibt es eine intelligentere Lösung.
Bearbeiten: Das Tool wird im Administratormodus ausgeführt.
Betrachten Sie Ihre Änderungen Versand und/oder Ausgangsdatenbank als DACPAC oder BACPAC. Die Bereitstellung erfordert nur Berechtigungen für SQL Server selbst. Auf diese Weise wird nur eine begrenzte Datenmenge unterstützt. Dies ist jedoch praktischer als die Skripterstellung von Wiederherstellungen (das programmgesteuerte Bereitstellen von DACPAC wird von DacFx unterstützt). Datenbankprojekte im Allgemeinen sind ein großer Gewinn, da sie die Versionierung vollständig unterstützen. –