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 回答