在两台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) 

解决方案 »

  1.   

    楼主建立连接服务器的时候,应该用的是windows身份认证验证吧
      

  2.   

    1 在server1使用企业管理器
    2.展开 "SQL   Server组 ",鼠标右键点击SQL   Server服务器的名称,选择 "属性 ",再选择 "安全性 "选项卡
    3.在 "身份验证 "下,选择 "SQL   Server和   Windows   ". 
      

  3.   

    注,用查询分析器直接链接server1无论什么模式都没有问题,就是通过server2链接server1时出问题,而且登陆server2用windows认证,没问题可以访问server1,登陆server2用sql 认证就不能访问server1上的表了。
    建立链接服务器时不能设用什么身份认证的呀,在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 连接相关联。
      

  4.   

    server1和server2上都是混合认证SQL Server和 Windows ".
    已经说过了在server2上用查询分析器用任何方式(windows认证和sql认证)都可以直接链接到server2上。
    关键是登陆server2链接server1上的表时出问题.
      

  5.   

    不同服务器数据库之间的数据操作--创建链接服务器 
    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'                          --删除链接登录名
    用这种方式试试
      

  6.   

    谢谢Dlut_LIuQ
    但应该不是这个问题,你只是用语句来实现,昨天我已经试过了,用语句
    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
      

  7.   

     哦 这样就看明白了 你需要建立相应的链接服务器登录--添加登陆用户
    exec sp_addlinkedsrvlogin
    @rmtsrvname='srv_lnk',
    @rmtuser='DB2User',
    @useself='false',  
    @locallogin='sa',
    @rmtpassword='Password'
      

  8.   

    @useself 这个参数不要忘记 另外建议sa设个密码 空密码好像有限制的
      

  9.   

    干脆这样在server2上运行查询分析器,用sql 认证 登陆server2 ,输入 用户名:sa 
    运行
    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  查询的数据,奇怪同样的语句登陆这边服务器的方式不同,就无法访问远程服务器的数据了。
      

  10.   

    给sa加上口令也一样exec sp_addlinkedsrvlogin 'server1', 'false ',null, 'sa', '1234' /*创建到server1的登陆*/,在server2用windwos认证没问题,用sql认证就不行了
      

  11.   

    这个问题好像2007年就被提出来了,怎么到现在还没有解决吗?
    2007cndn中提出的问题链接
    http://topic.csdn.net/u/20070827/17/5695b284-11f0-44d4-b565-6e4801d1a09d.html
      

  12.   

    注: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)  ====没打sp3,最后面的Service Pack 3是操作系统的
    你这个是msde,他的sp3和企业版的sp3是不一样的,下载时注意选择
      

  13.   

    CSDN上回答问题的速度也太快了点吧......
      

  14.   


    该楼主说得很对,我其他方法都试全了,最后没有办法,就安装了“SW CD NTRL SQL Svr Standard Edtn 2000SP4 ChnSimp #1.x11-22873.exe”,安装好以后,用sa帐号再也没有出现过问题。