2011-01-07 11 views
1

Ich habe ein SSIS-Paket, das eine Ansicht für einige Datensätze abfragt und dann eine E-Mail mit Datenbank-E-Mail sendet. Ich möchte das Paket auf dem SQL Server bereitstellen, in dem diese Ansichten vorhanden sind, und dann mithilfe des SQL Server-Agents planen, aber ich habe eine Reihe von Problemen festgestellt.Bereitstellen des SSIS-Pakets und Beibehalten eines Verbindungskennworts

Das Hauptproblem besteht darin, dass innerhalb des Jobs ein Verbindungsmanager vorhanden ist, der Anmeldeinformationen für ein SQL Server-Konto gespeichert hat, das auf die Ansichten und das E-Mail-Profil zugreifen kann. Ich habe das Paket auf EncryptSensitiveWithPassword anstelle von Benutzerschlüssel festgelegt, aber ich finde keine Möglichkeit, dieses Kennwort tatsächlich an den SQL Server-Agent zu übergeben, wenn der Job ausgeführt wird. Wenn es ausgeführt wird, schlägt es fehl, da es keine Verbindung herstellen kann.

Eine Reihe von Websites sagen, die Konfigurationsdatei zu verwenden, aber wenn ich diese Route gehe, bricht es den Job vollständig beschwert, dass die OLEDB-Verbindung nicht hergestellt werden kann. In diesem Szenario kann ich den Job auf meinem Rechner nicht einmal lokal ausführen.

Einige andere Websites empfohlen, das Paket in den lokalen ssis-Paketspeicher auf dem Computer zu kopieren, aber ich habe nur Zugriff auf den Computer über SQL Server-Tools, kann ich nicht in das Dateisystem remote oder installieren, damit ich muss über die Manifestdatei mithilfe des SSIS-Bereitstellungsprozesses installiert werden.

Ich habe etwas über das Speichern von Einstellungen in einer anderen DB-Tabelle gelesen, aber das wirft wieder Probleme mit Berechtigungen auf dem Server auf.

Endlich versuchte ich im Job Scheduler passing/password oder/decrypt, aber wenn ich ok klicke, entfernt der Scheduler diesen Parameter.

Dies ist ein interner Server und Sicherheit ist nicht wirklich ein großes Anliegen, Irgendeine Idee, wie kann ich das Entschlüsselungspasswort im Klartext übergeben oder einfach SSIS sagen, um die Sicherung vertraulicher Daten nicht zu kümmern?

Antwort

0

Es klingt wie, wenn Sie die Konfigurationsdatei verwenden, dass Sie die Konfigurationsdatei nicht richtig einrichten.

Was ist der genaue Fehler, den Sie erhalten, wenn Sie es lokal ausführen? Ich kann versuchen, das Problem neu zu erstellen.

+0

Alles, was ich tat, war mit der rechten Maustaste auf den Kontrollfluss und wählen Sie Paketkonfiguration, dann aktivieren Sie die Paketkonfiguration. Fügen Sie eine neue XML-Konfigurationsdatei (config.dtsConfig) hinzu und fügen Sie meinen Verbindungsmanager zur Konfig in der Checkbox-Option hinzu. Wenn ich es dann laufen lasse, bekomme ich "Fehler beim Erhalten von Folgeaufzeichnungen - SSIS-Fehlercode DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER" und viel mehr Text, der nicht in dieses Feld passt. – JoshReedSchramm

0

Haben Sie das Paket in Gebote eingerichtet, um die Passwörter zu speichern, und speichern Sie das Paket dann auf ssis und sagen Sie ihm, die Passwörter zu verschlüsseln? Wenn Sie sie nicht lokal speichern, könnte es sein, dass Sie Ihre Kennwörter verloren haben und dann das Paket ohne sie verschoben haben.

+0

Nicht sicher, was Gebote sind. Ich habe den Verbindungsmanager auf Mein Passwort speichern eingestellt. Und dann wird das gesamte Paket auf einen ProtectionLevel von EncryptSensitiveWithPassword festgelegt. Aber es scheint keine Möglichkeit zu geben, dieses Passwort im SQL-Server-Agent bereitzustellen. – JoshReedSchramm

+0

Gebote ist Business Intelligence Development Studios, auch bekannt als Visual Studios. Wie hast du das Paket erstellt? – DForck42

1

Der Trick ist:

  • Wenn das Paket in SQL Server Business Intelligence Studio speichern, sorgen die Paketeigenschaften> Protectionlevel zu EncryptSensitiveWithUserKey gesetzt.
  • Wenn Sie das SSIS-Paket in SQL Server importieren (aus SQL Mgmt Studio> Objekt-Explorer> [Server] Integration Services> Gespeicherte Pakete> MSDB> rechte Maustaste> Paket importieren> Paketspeicherort auf Dateisystem festlegen, wählen Sie die Datei aus Wählen Sie im Paketpfad und die Option "Verlassen Sie sich auf Serverspeicher und Rollen für die Zugriffssteuerung". Ich würde raten, wenn Sie die .dtsx-Datei importieren, müssen Sie als der Benutzer angemeldet sein, der die .dtsx-Datei speicherte. Diese

bedeutet, dass das Passwort mit dem Paket gespeichert und kann daher verwendet werden, wenn jemand das Paket ausführt. Wenn Es ist etwas, von dem Sie nicht wollen, dass jemand Sie ausführt, und dann die Sicherheit entsprechend absichern.Alternativ können Sie die Verbindung so ändern, dass sie Integrated Security (Windows-Authentifizierung anstelle von sql login) verwendet, und den Job so ändern, dass er das Paket als Benutzer mit Zugriff auf die vom Paket abgefragte Ansicht & ausführt. Dies ist die bevorzugte Option aus der Sicht, dass Sie nirgends Passwörter benötigen und diese stattdessen über die Benutzeridentität und Berechtigungen verwalten.