2012-04-05 26 views
1

Ich hatte eine sehr schwierige Zeit versucht, eine Tabelle auf einem Server zu lesen und in eine andere vorhandene Tabelle auf meiner Festplatte zu schreiben (lokal ... erstellt mit SQL Server Express).Serverübergreifende SQL-Abfrage zum Lesen aus einer Tabelle (freigegeben) und Schreiben in eine andere (lokale)

Hier ist mein Code:

insert into [DPS-ABC1DE2\SQLEXPRESS].my_LOCAL_DATABASE.dbo.SHIPMENTS 
select 
    CUST_NUMBER, 
    SHIPMENT_ID, 
    SHIP_DATE, 
    MODE_CODE, 
    MILES, 
    WEIGHT, 
    AMOUNT_PAID 
from SHARED_DATABASE.dbo.SHIPMENTS 
where datepart(year,SHIP_DATE)= 2012 and datepart(month,SHIP_DATE) = 1 

ich die folgende Fehlermeldung erhalten, wenn ich dies auszuführen:

Msg 7202, Level 11, State 2, Line 7
Could not find server 'DPS-ABC1DE2\SQLEXPRESS' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

Also habe ich versucht habe

EXEC sp_addlinkedserver [DPS-ABC1DE2\SQLEXPRESS] 

verwenden, aber ich bekomme diese Fehler:

"Msg 15247, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 29
User does not have permission to perform this action."

Ich bin ein Anfänger SQL-Programmierer, also musste ich dies ausgiebig recherchieren, aber ohne Erfolg. Jede Hilfe wäre willkommen!

+1

‚Benutzer ist nicht berechtigt, diese Aktion“ durchzuführen. - Sie verfügen nicht über ausreichende Berechtigungen, einfach wie die –

+0

FYI, Cross-Server-Abfragen können sein [IMHO ] Es ist extrem schwierig, ständig zur Arbeit zu kommen, es ist definitiv ein fortgeschrittenes Thema, und man sollte sich vor ihm in Acht nehmen, zumindest solange man sich als Anfänger versteht. –

Antwort

1

sp_addlinkedserver Ausführungsberechtigungen standardmäßig für Mitglieder der festen Serverrollen sysadmin und setupadmin ausführen. Überprüfen Sie diese link auf, wie man es auf sql server 2005 aussortiert.

Sobald Sie dieses Problem loswerden, können Sie die folgenden verwenden, um den anderen Server zu verbinden und sich anzumelden.

--add the linked server and then login 
EXEC sp_addlinkedserver 'DPS-ABC1DE2\SQLEXPRESS',N'SQL Server'; 

EXEC sp_addlinkedsrvlogin @rmtsrvname='DPS-ABC1DE2\SQLEXPRESS', 
     @useself='false', 
     @rmtuser='login_username', 
     @rmtpassword='login_password' 

--do your job here      
Insert into [DPS-ABC1DE2\SQLEXPRESS].my_LOCAL_DATABASE.dbo.SHIPMENTS 
Select... 

--drop the linked server login and then drop the server 
EXEC sp_droplinkedsrvlogin 'DPS-ABC1DE2\SQLEXPRESS', NULL 
EXEC sp_dropserver 'DPS-ABC1DE2\SQLEXPRESS', NULL; 

hoffte, das hilft ...