sql server 2005 触发器 执行sp_executesql 的问题
db1,db2是一个服务器 server 的2个数据库db1的table1  建立一个after update触发器 ,当 update  table1 后建立一个复制表到  db2的table2中exec  server.db2.dbo.sp_executesql  N'select * into table2 from server.db1.dbo.table1'当用server.db1.dbo.table1  时  无法正常运行报事务上下文正在使用
当用       db1.dbo.table1  时  可以正常运行如果前边必须 加server 如何解决  这是什么原因造成的呢

解决方案 »

  1.   

    --先做鏈接
    --创建链接服务器 
    exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名
      

  2.   

    你是不是装多个sql服务.试试机器名+实例名的办法.[servername/sql实例名].db1.dbo.table1  
      

  3.   

    [servername\sql实例名].db1.dbo.table1  
      

  4.   

    把机器名改为IP呢?[ip].db1.dbo.table1  
      

  5.   

    按理说是可以的,你把server用127.0.0.1代替试试
      

  6.   

    让你执行上边那个是想判断下机器名是不是和你数据库判断的一致。在查询分析器里执行:   
        use   master   
        select   srvid,srvname,datasource   from   sysservers           
          
    如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样,   需要按如下方法修改:   
          
        USE   master   
      GO   
      --   设置两个变量   
      DECLARE   @serverproperty_servername     varchar(100),     
      @servername         varchar(100)   
      --   取得Windows   NT   服务器和与指定的   SQL   Server   实例关联的实例信息   
      SELECT   @serverproperty_servername   =   CONVERT(varchar(100),   SERVERPROPERTY('ServerName'))   
      --   返回运行   Microsoft   SQL   Server   的本地服务器名称   
      SELECT   @servername   =   CONVERT(varchar(100),   @@SERVERNAME)   
      --   显示获取的这两个参数   
      select   @serverproperty_servername,@servername   
      --如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的   
      --删除错误的服务器名   
      EXEC   sp_dropserver   @server=@servername   
      --添加正确的服务器名   
      EXEC   sp_addserver   @server=@serverproperty_servername,   @local='local'   
        
    修改这项参数,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。
      

  7.   

    你先试试用IP可不可以,如果IP也不可以的话,就没必要上边的操作了。
      

  8.   


    我的执行结果
    srvid,   srvname,               datasource  
    1 SQL2005\GDERPSQLSERVER SQL2005\GDERPSQLSERVER
      

  9.   

    经测试,在我本机上正确的,而且我的机器上同时装了sql2000和sql2005,希望给你找问题提供一点线索
      

  10.   

    我的执行结果 
    srvid,  srvname,              datasource  
    1 SQL2005\GDERPSQLSERVER SQL2005\GDERPSQLSERVER这样的话,使用server肯定不行。。
    两个方案:
    1.使用127.0.0.1,应该不会出错的。
    2.如果1不能满足你的需求,你就按我上边给你的方法改改看,不过我是在2000上使用的,2005没有验证过。
      

  11.   


    select CONVERT(varchar(100),  @@SERVERNAME服务器 怎么是 null
    我本机  是 有数据的...?
      

  12.   

    哈哈  可以了   就是 @@SERVERNAME 为null的原因