2009-04-03 2 views
2

Dies ist weniger eine Frage der Programmierung und eher einen Vorschlags für Werkzeuge eines :-)SQL Server verhindern, dass Skripte auf der falschen Instanz starten Being

ich nach einer Möglichkeit, Skripte zu verhindern, versehentlich auf der Flucht zu sein false sql server instance, dh Sie führen dieses Script nicht aus, um Kunden in Ihrer Entwicklungsumgebung in der Live-/Produktionsumgebung abzuholen.

Was ich im Grunde bin, ist ein plucking für Enterprise Manager (oder eine andere App für die Verwaltung einer SQL-Server-Instanz), die es mir erlauben würde, eine Liste der Verbindungsdetails für SQL Server-Instanzen zu definieren ist mit einer LIVE-Umgebung verbunden, die es ziemlich klar macht, entweder durch Einfärben der Registerkarte rot, oder durch Öffnen eines Nachrichtenfelds mit der Aufschrift "Dies ist mit XXXX-Instanz verbunden. Sind Sie sicher"

Asside form ist sehr vorsichtig, Hat jemand Ideen für Tools/Plugins, die dies oder etwas Ähnliches tun?

Vielen Dank für jede Hilfe

Antwort

2

hier gehen Sie: http://www.ssmstoolspack.com/

dieser kostenlose SSMS AddIn bietet Fenster pro Server Färbung.

+0

Prost, das ist genau das, was ich gesucht habe :-) –

0

Sie können verschiedene (eingeschränkt) Zugriffsrecht auf Sie Instanz für den Benutzer leben Sie normalerweise verwenden. Und dann haben Sie einen anderen Benutzernamen für alle wichtigen Dinge auf dem Live-System.

4

Alle beginnt mein Skripte mit diesem:

if exists (select 1 from dbo.environment where value in('production', 'qa')) 
    return 

Natürlich bedeutet dies, dass ich ein Umfeld Tisch habe und ‚Produktion‘, ‚Entwicklung‘, ‚qa‘ usw. in ihm je nachdem, wo es ist gehostet.

+0

+1 guter Vorschlag –

+0

+1 Sieht aus wie eine gute Idee. Sie könnten sogar etwas wie sagen, wenn nicht EXISTEN (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID (N '[dbo]. [present_only_in_test]')) zurückgeben. So können Sie nicht brauchen würden, um das Leben System zu ändern und nur present_only_in_test Objekt in Test/Entwicklung env hinzufügen – kristof

+0

Es scheint, dass, wenn auch nicht ganz sicher ist, Antwort von Andomar und Kommentaren zu GO – kristof

1

Diese SQL-Code überprüft, ob Sie auf dem richtigen Server sind:

if @@servername <> 'testserver' 
    RAISERROR ('Wrong server', 16, 1); 

Ein Fehler (oder was das betrifft zurück), wird die Ausführung bis zur nächsten GO-Anweisung verhindern. Zum Beispiel wird im Folgenden noch hallo Welt drucken, und löschen Sie die Benutzertabelle:

RAISERROR ('Wrong server', 16, 1); 
go 
drop table users 
print 'Hello world!' 
go 
+0

Gutem Punkt über die Auswirkungen von GO – kristof

+0

Wenn der GO sehen Anweisungen verursachen Sie Probleme, in Erwägung ziehen, einen Fehler wie folgt zu werfen: 'RAISERROR ('NICHT ÜBERNEHMEN, NICHT 200 $', 20, 1) MIT LOG 'Sammeln Das wird Ihre Sitzung beenden, so kann sogar GO nicht eine andere Charge verursachen zu rennen. Um zu arbeiten, muss es den Schweregrad 20 (für "fatale" Fehler) haben und die 'WITH LOG' Option verwenden. Um es auszuführen, müssen Sie Mitglied der festen Rolle sysadmin sein oder ALTER TRACE-Berechtigungen haben. Nachteil: Es wird Ihre Schande über das SQL Server-Fehlerprotokoll ('sp_readerrorlog') und das Windows-Anwendungsprotokoll einfügen. – SurroundedByFish

Verwandte Themen