1

あるサーバーでテーブルを読み取ろうとして、ハードドライブ上の別の既存のテーブルに書き込もうとするのに非常に苦労しています(ローカル... SQL Server Expressを使用して作成)。

これが私のコードです:

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

これを実行すると、次のエラー メッセージが表示されます。

メッセージ 7202、レベル 11、状態 2、行 7
sys.servers でサーバー 'DPS-ABC1DE2\SQLEXPRESS' が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアド プロシージャ sp_addlinkedserver を実行して、サーバーを sys.servers に追加します。

だから私は使ってみました

EXEC sp_addlinkedserver [DPS-ABC1DE2\SQLEXPRESS]

しかし、私はこのエラーが発生します:

「メッセージ 15247、レベル 16、状態 1、プロシージャ sp_MSaddserver_internal、行 29
ユーザーには、このアクションを実行する権限がありません。」

私は初心者の SQL プログラマーなので、これを広範囲に調査する必要がありましたが、うまくいきませんでした。どんな助けでも大歓迎です!

4

1 に答える 1

2

sp_addlinkedserver実行権限のデフォルトは、sysadminおよびsetupadmin固定サーバーロールのメンバーです。で整理する方法については、このリンクsql server 2005を確認してください。

その問題を取り除いたら、以下を使用して他のサーバーにリンクしてログインできます。

--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;

お役に立てれば...

于 2012-04-05T14:45:15.687 に答える