2017-11-14 5 views
1

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 .bakmyprogram_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.

+1

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. –

Antwort

0

Sie sollten nach Erhebung stellen und als Administrator-Konto ausgeführt, vielleicht wird dies dazu beitragen:

http://www.downloadinformer.com/how-to-make-a-vb-net-application-always-run-in-administrator-mode/

+0

Die Anwendung wird bereits immer im Administratormodus ausgeführt. Das Update selbst funktioniert gut, auch der SQL-Teil mit 'UPDATE' oder' ALTER'. Aber der 'RESTORE' schlägt auf' Desktop' fehl, arbeitet aber zum Beispiel in 'c: \ temp'. – user1673665

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Von Review] (/ review/low-quality-posts/17943703) –

+0

Nein, das hilft nicht - selbst ein Administrator kann nicht von einem entfernten SQL Server-Rechner auf das Laufwerk eines lokalen Benutzers zugreifen. –

Verwandte Themen