63 Stimmen

Was ist die T-SQL-Syntax zum Verbinden mit einem anderen SQL Server?

Wenn ich eine gespeicherte Prozedur (SP) von einem SQL Server auf einen anderen kopieren muss, klicke ich mit der rechten Maustaste auf die SP in SSMS und wähle "Gespeicherte Prozedur skripten als > CREATE nach > Neue Abfrage-Editor-Fenster". Dann ändere ich die Verbindung, indem ich mit der rechten Maustaste auf dieses Fenster klicke und "Verbindung > Verbindung ändern..." auswähle und dann den neuen Server auswähle und F5 drücke, um das Erstellen auf dem neuen Server auszuführen.

Also lautet meine Frage: "Was ist die T-SQL-Syntax, um eine Verbindung zu einem anderen SQL Server herzustellen?", damit ich das einfach oben im Skript erstellen und F5 drücken kann, um es auszuführen und es zum neuen Server wechseln und das Erstellungsskript ausführen kann.

Beim Tippen der Frage wurde mir klar, dass, wenn ich Ihnen den Hintergrund zu dem, was ich versuche zu tun, gebe, Sie möglicherweise schneller und besser als ich eine Lösung finden könnten.

4voto

Oscar Fraxedas Punkte 4109

Wenn Sie eine Verbindung zu mehreren Servern herstellen, sollten Sie ein 'GO' hinzufügen, bevor Sie die Server wechseln, da sonst Ihre SQL-Anweisungen gegen den falschen Server ausgeführt werden.

z.B.

:CONNECT SERVER1
Select * from Table
GO
enter code here
:CONNECT SERVER1
Select * from Table
GO

http://www.sqlmatters.com/Articles/Changing%20the%20SQL%20Server%20connection%20within%20an%20SSMS%20Query%20Windows%20using%20SQLCMD%20Mode.aspx

0 Stimmen

(1) SQLCMD-Modus, (2) :CONNECT, (3) USE, (4) SELECT.

2voto

Wayne Punkte 36217

Versuchen Sie, einen verknüpften Server zu erstellen (was Sie mit sp_addlinkedserver tun können) und dann OPENQUERY zu verwenden

0 Stimmen

Wayne - Wenn ich deinen Vorschlag richtig verstehe, wird dadurch ein auf Server1 befindlicher SP auf Server2 ausgeführt, oder? Wird dadurch der gleiche SP auf Server2 erstellt?

0 Stimmen

Es führt eine gespeicherte Prozedur auf Server1 aus, die einen Link zu Server2 öffnet. Sie können dann eine Abfrage durchführen oder etwas auf Server2 aufrufen.

2voto

frans eilering Punkte 369

Auf meinem Laufwerk C erstelle ich zuerst eine TXT-Datei, um eine neue Tabelle zu erstellen. Du kannst alles verwenden, was du möchtest, in dieser Textdatei

in diesem Fall heißt die Textdatei "Bedrijf.txt"

der Inhalt:

Print 'START(A) create table'

GO 1

If not EXISTS
(
    SELECT *
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'Bedrijf'
)
BEGIN
CREATE TABLE [dbo].[Bedrijf] (
[IDBedrijf] [varchar] (38)   NOT NULL ,
[logo] [varbinary] (max) NULL ,
[VolledigeHandelsnaam] [varchar] (100)  NULL 
) ON [PRIMARY]

speichere es

dann erstelle ich eine weitere TXT-Datei mit dem Namen "Bedrijf.bat" und der Erweiterung bat. Ihr Inhalt:

OSQL.EXE  -U Benutzername -P Passwort -S IP-Adresse -i C:Bedrijf.txt -o C:Bedrijf.out -d meinDatenbankname

speichere es und führe es aus dem Explorer durch Doppelklick aus

Die Ergebnisse werden in einer TXT-Datei auf Ihrem Laufwerk C mit dem Namen "Bedrijf.out" gespeichert

es zeigt an

1> 2> 3> START(A) create table

wenn alles gut läuft

Das ist alles

0voto

Igor Krupitsky Punkte 707

Versuchen Sie PowerShell zu tippen wie:

$cn = new-object system.data.SqlClient.SQLConnection("Data Source=server1;Initial Catalog=db1;User ID=user1;Password=password1");
$cmd = new-object system.data.sqlclient.sqlcommand("exec Proc1", $cn);
$cn.Open();
$cmd.CommandTimeout = 0
$cmd.ExecuteNonQuery()
$cn.Close();

-1voto

MikeV Punkte 7

Wenn möglich, schauen Sie sich SSIS (SQL Server Integration Services) an. Ich fange gerade erst an, mich mit diesem Toolkit vertraut zu machen, aber ich bin bereits dabei, über 40 Server zu iterieren und mich darauf vorzubereiten, allerlei Unheil anzurichten ;)

2 Stimmen

Das beantwortet seine Frage nicht wirklich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X