在两台xp系统server1,server2上安装了sql2000 和sp3 ,均采用混合认证方式,在server2上用查询分析器可以用任何方式链接到server1上(windows认证和混合认证都没有问题,两台服务器sa密码均为空)。在server2建立到server1的链接服务器后,出现两种情况:1、用查询分析器登陆server2时用windows身份认证,登陆server2后,运行:select * from server1.hss.dbo.m_kc正常从远程返回了数据。2、用查询分析器登陆server2时用sql server身份认证,登陆server2后,运行:select * from server1.hss.dbo.m_kc提示如下:
服务器: 消息 18452,级别 14,状态 1,行 1
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。不知道是什么原因注:select @@version的结果
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
服务器: 消息 18452,级别 14,状态 1,行 1
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。不知道是什么原因注:select @@version的结果
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
2.展开 "SQL Server组 ",鼠标右键点击SQL Server服务器的名称,选择 "属性 ",再选择 "安全性 "选项卡
3.在 "身份验证 "下,选择 "SQL Server和 Windows ".
建立链接服务器时不能设用什么身份认证的呀,在server2上用企业管理器在安全性,右击链接服务器->新建链接服务器->输入远程服务器名server1,服务器类型选sql server,在安全性选项卡中选“使用此安全上下文”,输入远程计算机的登陆名sa 密码空,就完成了链接服务器的设置。
关键是运行查询分析器后
1、登陆server2用windows认证模式,在查询分析器中访问server1,运行:select * from server1.hss.dbo.m_kc没有问题。返回了从server1上m_kc中的数据。
但在查询分析器用sql认证登陆server2后无法访问。提示
服务器: 消息 18452,级别 14,状态 1,行 1
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
已经说过了在server2上用查询分析器用任何方式(windows认证和sql认证)都可以直接链接到server2上。
关键是登陆server2链接server1上的表时出问题.
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from
--4。
--EXEC AT使用 必须启动rpc
EXEC sp_addlinkedserver 'chinancl',' ','SQLOLEDB','CHINANCL-CMS' --新建连接
EXEC sp_addlinkedsrvlogin 'chinancl','false',null,'sa','sa' --用户名 密码
EXEC sp_serveroption 'chinancl','rpc out',true --启动RPCEXEC
('create database text ') at [chinancl]
EXEC
(' use text
create table text (id int)') at [chinancl]exec sp_dropserver 'chinancl','droplogins' --删除链接登录名
用这种方式试试
但应该不是这个问题,你只是用语句来实现,昨天我已经试过了,用语句
exec sp_addlinkedserver 'server1', ' ', 'SQLOLEDB ', 'server1'
exec sp_addlinkedsrvlogin 'server1', 'false ',null, 'sa', ''
也就是完成了建立链接数据库的功能,但是还是同样的问题。执行完以上两句后在server2上用查询分析器用windows登陆后,执行:select * from server1.hss.dbo.m_kc没问题。
但用查询分析器用sql认证方式链接server2后,执行:select * from server1.hss.dbo.m_kc就出现问题了。
不过还是谢谢
Dlut_LIuQ是否是windows的bug
exec sp_addlinkedsrvlogin
@rmtsrvname='srv_lnk',
@rmtuser='DB2User',
@useself='false',
@locallogin='sa',
@rmtpassword='Password'
运行
exec sp_dropserver 'server1', 'droplogins ' /*删除已经存在的链接*/
go
exec sp_addlinkedserver 'server1', '', 'SQLOLEDB', 'server1' /*创建到server1的链接*/
go
exec sp_addlinkedsrvlogin 'server1', 'false ',null, 'sa', '' /*创建到server1的登陆*/
go
select * from server1.his.dbo.m_kc /*在服务器server2上执行到server1的查询*/
返回信息:
所影响的行数为 1 行)
(所影响的行数为 1 行)
(所影响的行数为 1 行)
(所影响的行数为 1 行)
(所影响的行数为 0 行)
(所影响的行数为 1 行)
(所影响的行数为 0 行)
(所影响的行数为 1 行)服务器: 消息 18452,级别 14,状态 1,行 1
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
现在在查询分析器中断开链接重新以windows身份认证登陆(无需输入用户名密码)
同样运行
exec sp_dropserver 'server1', 'droplogins ' /*删除已经存在的链接*/
go
exec sp_addlinkedserver 'server1', '', 'SQLOLEDB', 'server1' /*创建到server1的链接*/
go
exec sp_addlinkedsrvlogin 'server1', 'false ',null, 'sa', '' /*创建到server1的登陆*/
go
select * from server1.his.dbo.m_kc /*在服务器server2上执行到server1的查询*/
返回了server1.his.dbo.m_kc 查询的数据,奇怪同样的语句登陆这边服务器的方式不同,就无法访问远程服务器的数据了。
2007cndn中提出的问题链接
http://topic.csdn.net/u/20070827/17/5695b284-11f0-44d4-b565-6e4801d1a09d.html
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3) ====没打sp3,最后面的Service Pack 3是操作系统的
你这个是msde,他的sp3和企业版的sp3是不一样的,下载时注意选择
该楼主说得很对,我其他方法都试全了,最后没有办法,就安装了“SW CD NTRL SQL Svr Standard Edtn 2000SP4 ChnSimp #1.x11-22873.exe”,安装好以后,用sa帐号再也没有出现过问题。