Ich habe eine Webanwendung, die Microsoft Sql Management Objects (SMO) DLLs verwendet. Ich frage mich, wie ich die Bibliotheken für eine Remote-Maschine neu verteilen soll.Ausführen eines SQL-Installationsskripts mit SMO. Alternative Lösungen benötigt
Wie ich es verstehe, kommen diese mit SQL Server oder Sql Express - die nicht auf dem Remote (gemeinsam) Webserver ist. Den Host zu fragen, sie zu installieren, ist wahrscheinlich nicht in Frage, also ist es möglich, sie dynamisch zu laden?
Siehe unten fehler-
Datei oder Assembly 'Microsoft.SqlServer.Smo, Version = 9.0.242.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91' laden kann oder eine ihrer Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.
Alternativ, wenn jemand eine Problemumgehung für das folgende Snippet bereitstellen kann, das auch nützlich wäre. Die Skriptvariable ist ein SQL-Installationsskript, das bis zum Ende gelesen wurde. Das Schöne daran ist die Ausgabe der einzelnen Ausführungsstrings aus SQL. Ich könnte natürlich alles nur in einem Stück ausführen, aber das gibt dem Benutzer kein visuelles Feedback Zeile für Zeile, dass der SQL-Befehl ok ausgeführt wird.
Gibt es eine gespeicherte Prozedur, die so etwas ausführen könnte? Oder eine alternative Möglichkeit, ein Installationsskript ohne vollständige Berechtigungen auszuführen.
Dim connection As New SqlConnection(Me.ConnectionString)
connection.Open()
connection.Close()
Dim server As New Server(New ServerConnection(connection))
server.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteAndCaptureSql
Dim commands As StringCollection = server.ConnectionContext.CapturedSql.Text
server.ConnectionContext.ExecuteNonQuery(script, ExecutionTypes.ContinueOnError)
Dim s As String
For Each s In server.ConnectionContext.CapturedSql.Text
AppendMessages(s)
Next
Denken Sie, dass immer noch Admin-Zugriff erfordert. Dies ist für eine gemeinsame Hosting-Umgebung. – Paul
dann in den Datenbankveröffentlichungsassistenten schauen: http://www.microsoft.com/downloads/details.aspx?familyid=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en –
Muss eine eigenständige Lösung sein, ausgeführt von einem nicht techie Benutzer von einer Webanwendung. Das ist also auch raus. Trotzdem danke. – Paul